如何从 React Native Picker 获取值和标签名称?

Posted

技术标签:

【中文标题】如何从 React Native Picker 获取值和标签名称?【英文标题】:How to get value and label name from React Native Picker? 【发布时间】:2018-06-04 03:42:02 【问题描述】:

在我的 react native 项目中,我有一个选择器,允许用户按分支过滤员工。我从我的数据库中获得了标签名称和值。 现在我可以从 picker value 中获取 branch 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);

      
    );

感谢您的帮助。

【问题讨论】:

【参考方案1】:

使用索引获取数组元素。

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

    console.log(branches[index]);

  
 );

【讨论】:

我想要数据库中的索引而不是数组中的索引,因为它不一样 你可能需要实现 redux 来发送 api 请求并将 redux 状态映射到 props 如果这是你想要的? 在项目中我还没有使用redux,因为它只是一个小项目。 你可以直接在这里调用 fetch 并设置对 state 的响应,或者实现 redux 来将你的 state 映射为一个 prop。只有这样,你才能达到你所需要的。 如果要显示分支名称,可以通过branches[index].name 获取【参考方案2】:

我现在终于可以解决问题了。我知道这不是一个好的解决方案,但至少它可以达到我现在想要的效果:)

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

希望这可以帮助遇到同样问题的其他人:)

【讨论】:

【参考方案3】:

您是否尝试通过将值设为对象来做类似的事情??

看起来像这样的东西:

    <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=id: branch.id, name: branch.name/>
    );
    )
   </PickerIOS>

然后用类似的东西访问它:

this.setState(
      
        pickerSelected: value.id,
        defaultSelected: value.name
      
    );

【讨论】:

以上是关于如何从 React Native Picker 获取值和标签名称?的主要内容,如果未能解决你的问题,请参考以下文章

React Native - 直接打开安卓图库

react-native-image-picker 视频的持续时间

将视频 URI 从 React-Native Picker 上传到 AWS S3 服务器

如何等待 react native Image Picker 回调函数响应?

RN 使用第三方组件之react-native-image-picker(拍照/从相册获取图片)

如何将 React-Native Picker 的初始值设置为空