web-dev-qa-db-ja.com

React Native Pickerから値とラベル名を取得する方法は?

反応ネイティブプロジェクトでは、ユーザーがブランチでスタッフをフィルタリングできるピッカーを使用しています。データベースからラベルの名前と値を取得しました。 ブランチIDピッカー値から取得して、譜表をフィルタリングできるようになりましたこのリンクを持つブランチhttp://192.168.10.60:8888/customerfeedback/public/api/staff?pId=.

私の問題は、state値を更新して、表示idの代わりに、選択したブランチをユーザーに表示したいことですピッカーラベル名を取得して自分の状態に更新するにはどうすればよいですか?

これが私のコードです:

    <PickerIOS
     style={{ flex: 1 }}
     selectedValue={this.state.pickerSelected}
     onValueChange={(value, index) => this.onPickerValueChange(value, index)}
    >
    {branches.map(branch =>{
      return (
         <PickerIOS.Item key={branch.id} label={branch.name} value={branch.id}/>
    );
    })}
   </PickerIOS>

これで値とインデックスを取得できますが、配列のインデックスではなくデータベースからインデックスを取得したいと思います。

onPickerValueChange = (value, index) => {
    this.setState(
      {
        pickerSelected: value
      },
      () => {

        console.log(value, index);

      }
    );
}

助けてくれてありがとう。

6
Doo Doo

インデックスを使用して配列要素を取得します。

onPickerValueChange = (value, index) => {
this.setState(
  {
    pickerSelected: value
  },
  (name, index) => {

    console.log(branches[index]);

  }
 );
}
2
Naveen Vignesh

最後に、問題を修正できます。私はそれが良い解決策ではないことを知っています、しかし少なくともそれは今私が望むものとしてうまくいきました:)

constructor(props) {
  super(props);
  pickerSelected: '',
  defaultSelected: 'Select branch's name',
}

そしてここで私が自分の状態を更新する方法

onPickerValueChange = (value) => {
    const { branches } = this.state;
    let branchName = branches.find(branch => branch.id === value);
    this.setState(
      {
        pickerSelected: value,
        defaultSelected: branchName.name
      }
    );
}

これが同じ問題に遭遇する他の人々を助けることができることを願っています:)

0
Doo Doo