反应本机:选择器onValueChange setState滞后,我需要setTimeout吗?

时间:2019-07-02 18:49:26

标签: react-native picker setstate

在我的React-native项目中,我有一个选择器,该选择器在后台选择要在函数中使用的数组。

 <Picker
      style={styles.onePicker} itemStyle={styles.onePickerItem}
      selectedValue={this.state.food}
      onValueChange={(itemValue) => { this.setState({food: itemValue}); this.cuisine();}}
    >
      <Picker.Item label="Italian" value="Italian" />
      <Picker.Item label="Chinese" value="Chinese" />
      <Picker.Item label="Cajun" value="Cajun" />
      <Picker.Item label="KFC" value="KFC" />
    </Picker>

这一切正常,但是在运行函数之前不会分配setState。在使用中,使用的数组是显示内容后面的一个选择器部分/操作。

对于Pickers,是否需要setTimeout或在react中使用的任何东西是正常的吗?

我也尝试在Cuisine函数中传递itemValue      this.cuisine(itemValue);

调用:

美食=(数据)=> {函数的东西}

,但是在控制台或警报中显示通过的数据,我只能得到

 [object Object]

而不是实际值。

在使用ES6和React时我有点绿色。

1 个答案:

答案 0 :(得分:1)

使用它对我来说很完美

 <View>
        <Picker        
          selectedValue={this.state.food}
          onValueChange={(itemValue) => {  this.cuisine(itemValue);}}>
          <Picker.Item label="Italian" value="Italian" />
          <Picker.Item label="Chinese" value="Chinese" />
          <Picker.Item label="Cajun" value="Cajun" />
          <Picker.Item label="KFC" value="KFC" />
  </Picker>

      <Text>{this.state.food}</Text>

  </View>

现在在烹调功能中

cuisine = (itemValue: any) => { 
   this.setState({food: itemValue});   
   console.log(this.state.food);
}