2016-08-19 98 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: [] 
}; 
相關問題