Как заставить реагировать на родной выборщик на выбранный вариант?
У меня есть сборщик, который я тестирую на iOS прямо сейчас с двумя вариантами. Каждый раз, когда я перехожу от первого варианта ко второму параметру, сборщик немедленно возвращается к первому варианту.
Вот как выглядит мой код для моего выбора.
<Picker
style={{
width: 100,
}}
selectedValue={(this.state && this.state.pickerValue) || 'a'}
onValueChange={(value) => {
this.setState({value});
}} itemStyle={{color: 'white'}}>
<Picker.Item label={'Hello'} value={'a'} />
<Picker.Item label={'World'} value={'b'} />
</Picker>
Я хочу, чтобы селектор оставался в новой прокрученной опции. Я также удалил часть || 'a'
атрибута selectedValue
, но это также не решило проблему.
Ответы
Ответ 1
При изменении значения вам нужно указать, какое свойство состояния было изменено, и соответственно изменить его с помощью this.setState
onValueChange={(value) => {this.setState({pickerValue: value});
Полный код
<Picker
style={{
width: 100,
}}
selectedValue={(this.state && this.state.pickerValue) || 'a'}
onValueChange={(value) => {
this.setState({pickerValue: value});
}} itemStyle={{color: 'white'}}>
<Picker.Item label={'Hello'} value={'a'} />
<Picker.Item label={'World'} value={'b'} />
</Picker>
Ответ 2
Я использовал этот "взлом":
render() {
const values = ['1', '2'];
return (
<Picker
value={this.state.value}
onValueChange={this.onValueChange.bind(this)}
>
{
<Picker
value={this.state.value}
onValueChange={this.onValueChange.bind(this)}
>
{
[<Picker.Item
label="n/a"
value={null}
/>].concat(values.map(value => {
return (
<Picker.Item
label={value}
value={value}
/>
)
})
)
}
</Picker>
);
}