web-dev-qa-db-ja.com

反応ネイティブのピッカーを新しく選択したオプションのままにする方法は?

現在、2つのオプションを使用してiOSでテストしているピッカーがあります。最初のオプションから2番目のオプションにドラッグダウンするたびに、ピッカーはすぐに最初のオプションに戻ります。

これは、ピッカーのコードがどのように見えるかです。

<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>

セレクターを新しくスクロールされたオプションのままにしておきたい。 selectedValue属性の|| 'a'部分も削除しましたが、それでも問題は解決しませんでした。

15
zavtra

値の変更時には、状態のどのプロパティが変更されたかを指定し、それに応じて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>
26
Nakib