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

Posted

技术标签:

【中文标题】如何将 React-Native Picker 的初始值设置为空【英文标题】:how to set inital value of React-Native Picker to empty 【发布时间】:2017-03-16 17:44:41 【问题描述】:

你知道如何将 React-Native Picker 组件的初始值设置为空吗?我的意思是它不应该显示任何选择的项目。

【问题讨论】:

这是不可能的。您可以使用label="" 和空值创建一个附加项目。 @TobiasLins 即使我使用 label="" 创建了一个附加项目,用户也可以选择它,我希望没有初始值,用户也不能重新选择该附加项目并显示类似占位符。 【参考方案1】:

我通过使用value=-1 设置假的不可选择项解决了这个问题。然后当用户选择有效物品时,带有value=-1的假物品消失。

 // this.state.selectedIndex initially setted to -1
    <Picker
        selectedValue=this.state.selectedIndex
        onValueChange=(value, index) =>  this.setState(selectedIndex: index) 
    
    >
        // first fake item
        if(Platform.OS === 'android' && this.state.selectedIndex === -1) 
            <Picker.Item label='CANCEL' value=-1 />
        

        <Picker.Item label='First' value=1 />
        <Picker.Item label='Second' value=2 />
        <Picker.Item label='Third' value=3 />
    </Picker>

【讨论】:

【参考方案2】:

我认为您需要的部分是enabled=false

https://github.com/react-native-picker/picker#enabled-1

      <Picker
        selectedValue=selected
        onValueChange=(itemValue, itemIndex) => setSelected(itemValue)>

        <Picker.Item key='' label='-- Select a Item --' value=null enabled=false />

        items.map(i => <Picker.Item key=i.key label=i.label value=i.value />)

      </Picker>

【讨论】:

【参考方案3】:

你可以这样做

        <Picker
          selectedValue=selected
          onValueChange=itemValue => setSelected(itemValue)
        >
          items &&
            items.map((element, index) => 
              if (index === 0) 
                return (
                  <Picker.Item
                    key=element.value
                    label=element.label
                    value=element.value
                    enabled=false
                  />
                );
              
              return (
                <Picker.Item
                  key=element.value
                  label=element.label
                  value=element.value
                />
              );
            )
        </Picker>

【讨论】:

以上是关于如何将 React-Native Picker 的初始值设置为空的主要内容,如果未能解决你的问题,请参考以下文章

我的 react-native 应用程序无法识别 react-native-image-crop-picker

如何使用 expo-image-picker 将文件从 iOS 上传到 Cloudinary?

React-native - 如何创建无限选择器

react react-native 日期插件 m-date-picker / rmc-date-picker的使用

如何设置标准 react-native android 选择器的样式?

选择器'labelColor'没有已知的类方法 - react-native-image-crop-picker - 用于 react-native iOS