繁体   English   中英

如何在React-native中使用Picker设置setState?

[英]How to setState with Picker in React-native?

我的省份搜索项目中的一个功能,但是现在我使用的是省份名称,现在我想在React-native中使用Picker从用户选择的值中设置状态。如何从用户从Picker中选择的值中设置状态?

我的搜索功能和构造函数。

  constructor(props) {
    super(props);
    this.state = {
     currentCity: "Phuket",
     searchText: ""
 };
 this.handleSubmit = this.handleSubmit.bind(this);
}

handleSubmit(event) {
 event.preventDefault();
 const { searchText } = this.state;
 this.refs.modal3.close();
 this.setState({ currentCity: searchText });
}

我的搜索框和选择器。

<TextInput
        placeholder="City name"
        ref={el => (this.element = el)}
        style={styles.textInput}
        value={this.state.searchText}
        onChangeText={searchText => this.setState({ searchText })}
      />
      <View>
        <Button style={styles.btn} onPress={this.handleSubmit}>
          <Text style={styles.submitText}>Submit</Text>
        </Button>
      </View>
      {//Dropdown Picker
      }
      <Picker
        selectedValue={this.state.language}
        style={{ height: 50, width: 200 }}
        onValueChange={(itemValue, itemIndex) =>
          this.setState({ language: itemValue })
        }
      >
        <Picker.Item label="Amnat Charoen" value="1906689" />
        <Picker.Item label="Ang Thong" value="1621034" />
        <Picker.Item label="Bangkok" value="1609350" />

从您在问题中提供的代码,我认为您是本机反应的新手。 您的代码有误(您只是复制并粘贴了代码)。 selectedValue={this.state.language} Picker这部分selectedValue={this.state.language}是错误的,因为您所在的state没有language

想象您有一个带有城市列表的Picker 并且您有一个状态为selectedCity的变量。

所以你的选择器会像这样:

<Picker
  selectedValue={this.state.selectedCity}
  onValueChange={(itemValue, itemIndex) =>
  this.setState({ selectedCity: itemValue })
  }
 >
   <Picker.Item label="city1" value="1" />
   <Picker.Item label="city2" value="2" />
</Picker>

这将使Picker列出2个城市(city1-city2),并且每当用户选择其中一个城市时,都会调用this.setState()并初始化selectedCity状态。

如果要用另一种方法调用setState ,而不是

onValueChange={(itemValue, itemIndex) =>
      this.setState({ selectedCity: itemValue })
      }

采用

onValueChange={(itemValue, itemIndex) =>
     //call method here!
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM