2016-08-19 6 views
1

У меня возникает странное поведение при использовании Picker.response-native - Picker - undefined не объект (оценка 'this.props.children [position] .props)

Я использую Picker следующим образом:

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

Из того, что я собрал, моя проблема исходит из строки 106 библиотек/компонентов/Picker/PickerAndroid.android.js, кажется, что свойство «onValueChange» запускает его. Я удалил его, и ошибки не произошло.

Я использую response-native 0.31.0, я использую виртуальное устройство android api 23 с genymotion.

Есть ли что-то, что я делаю неправильно?

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

Это как раз проблема. Я хочу, чтобы ошибка была намного более описательной, чем эта. Geez. Спасибо, что указали это. –

+0

вы можете помочь мне с аналогичной проблемой [здесь] (http://stackoverflow.com/questions/43364833/react-native-picker-selected-value-gives-undefined-is-not-an-object-error) –

0

У меня была аналогичная проблема, но использовал компонент Item + массив. И чтобы исправить это, я добавил пустой массив в качестве значения по умолчанию для моей DataSource проп Как что:

<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: [] 
}; 
Смежные вопросы