#react-native #jsx
#react-native #jsx
Вопрос:
В моем приложении есть модальный с разными вкладками, в котором пользователь может фильтровать результаты поиска по категориям в модальном. прямо сейчас это работает, но я просто помещаю событие в a <TEXT>
, мне нужна какая-то визуальная подсказка, например, флажок для моих опций
{this.state.currentTab === 1 amp;amp; (
<View>
<Text onPress={(text) => this.setGender(true)}>male</Text>
<Text onPress={(text) => this.setGender(false)}>female</Text>
</View>
)}
Как я могу использовать флажок вместо <TEXT>
того, чтобы использовать как в Android, так и в IOS?
Ответ №1:
Вы можете использовать эту библиотеку для флажка » react-native-circle-checkbox»
import CircleCheckBox, {LABEL_POSITION} from 'react-native-circle-checkbox';
{this.state.currentTab === 1 amp;amp; (
<View>
<CircleCheckBox
checked={true}
onToggle={(text) => this.setGender(true)}
labelPosition={LABEL_POSITION.RIGHT}
label="MALE"
/>
<CircleCheckBox
checked={true}
onToggle={(text) => this.setGender(false)}
labelPosition={LABEL_POSITION.RIGHT}
label="FEMALE"
/>
</View>
)}
Пример: https://snack.expo.io/@msbot01/intrigued-marshmallows
Комментарии:
1. Как я могу изменить checked на TRUE при изменении?
2. «проверено» основано на флаге true false, поэтому укажите это в переменной состояния и нажмите изменить состояние. —————- проверено={this.state.checked} onToggle={(текст) => this.setGender(false)} labelPosition={LABEL_POSITION.RIGHT} label=»ЖЕНСКИЙ» /> ** Обновил пример —>>> snack.expo.io/@msbot01/intrigued-marshmallows
3. Я получаю ошибку 500, должен ли я установить ее с помощью yarn или я могу просто импортировать ее?
4. Это ссылка на библиотеку, по которой вы получите информацию о конфигурации —>>>> github.com/ParamoshkinAndrew/ReactNativeCircleCheckbox
5. это здорово, но если у меня есть несколько флажков, я не могу переключать проверенное состояние для каждого из них. Все меняется сразу . у вас есть предложения?
Ответ №2:
Используйте этот компонент, который я создал вручную. Он отображает один и тот же переключатель на обеих платформах
const RenderRadio = (props) => {
const {
value, onChange, selectedValue
} = props;
const checked = value === selectedValue;
return (
<TouchableOpacity
style={{ flexDirection: 'row' }}
onPress={() => onChange(value)}
>
<View
style={{
width: 20,
height: 20,
borderRadius: 10,
borderWidth: 2,
borderColor: '#002451',
justifyContent: 'center',
alignItems: 'center',
}}
>
<View
style={{
width: 10,
height: 10,
borderRadius: 5,
backgroundColor: checked ? '#002451' : 'white',
}}
/>
</View>
<Text style={{ fontSize: 15, marginLeft: 10 }}>{value}</Text>
</TouchableOpacity>
);
};
используйте его как
<RenderRadio onChange={this.setSelectedValue} selectedValue={selectedValue} value={value}/>
и установите выбранное значение как
setSelectedValue = (value) => {
this.setState(selectedValue : value)
}
Ответ №3:
Вы можете использовать библиотеку собственной базы данных, в которой больше компонентов, которые вы можете использовать для фильтров поиска, и это более надежно, вы можете установить для нее флажок, используя checked prop, который является логическим, например :
import {
Icon,
CheckBox,
Spinner
} from "native-base";
<TouchableOpacity onPress={(text) => this.setGender(true)} >
<CheckBox checked ={tru}
onPress={(text) => this.setGender(true)} />
</TouchableOpacity>
Комментарии:
1. Я получаю ошибку 500, должен ли я установить ее с помощью yarn или я могу просто импортировать ее?
2. да, вы должны следовать инструкциям npmjs.com/package/native-base а затем следует сделать react-native ссылку, тогда вы сможете ее импортировать.