2016-08-19 139 views
1

使用Picker时遇到奇怪的行为。react-native - Picker - undefined不是一个对象(评估'this.props.children [position] .props)

我使用选取器如下:

<Picker 
    mode="dropdown" 
    style={styles.pickerField} 
    selectedValue={this.state.dayAndTime} 
    onValueChange={(text) => this.setState({ dayAndTime: text })} 
> 
    <Picker.Item label="Le 5/07 à 15H" value="0" key="0" /> 
</Picker> 

当显示这个选择器选择屏幕被加载时,我得到一个错误屏幕说(参见下文截图):未定义不是一个对象(计算“这一点。 props.children [position] .props)

从我收集的来看,我的问题来自库/ Components/Picker/PickerAndroid.android.js的第106行,似乎有一个属性“onValueChange”会触发它。我删除它,并没有发生错误。

我使用react-native 0.31.0,我用genymotion使用了一个android api 23虚拟设备。

有什么我做错了吗?

enter image description here

回答

3

必须有至少2项挑选,例如: <Picker.Item label="Le 5/07 à 15H" value="0" key="0" /> <Picker.Item label="Le 5/07 à 15H" value="1" key="1" />

也为更好的语法,你可以尝试: onValueChange={(dayAndTime) => this.setState({ dayAndTime })}

+0

谢谢,我只有一个项目,因为我没有被告知哪些应该在这个选择器去。我不会猜测这是一百万年的原因。 – vincenth

+0

这正是问题所在。我希望这个错误比这个更具描述性。吉兹。感谢您指出。 –

+0

你能帮助我一个类似的问题[这里](http://stackoverflow.com/questions/43364833/react-native-native-picker-selected-value-gives-undefined-is-not-an-object-error) –

0

我也有类似的问题,但它正在使用一个Item组件+一个数组。而要解决这个问题,我添加了一个空数组作为默认值我数据源支撑就像那个:

<Picker style={styles.picker} mode="dropdown" { ...props }> 
    <Picker.Item label="--- Select ---" value="" /> 
    { 
     props.dataSource.map(({ label, value }) => (
      <Picker.Item key={value} label={label} value={value} /> 
     )) 
    } 
</Picker> 

PickerWithLabel.defaultProps = { 
    dataSource: [] 
}; 
相关问题