【问题标题】:How to setState with Picker in React-native?如何在 React-native 中使用 Picker 设置状态?
【发布时间】:2019-03-09 07:28:46
【问题描述】:

我的项目中的省搜索功能,但现在我正在使用输入省的名称,现在我想在 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" />

【问题讨论】:

  • 似乎已经这样做了onValueChange={(itemValue, itemIndex) =&gt; this.setState({ language: itemValue }) } 也可以是reactjsreact-native 不要同时使用这两个标签。
  • 我只是从 React-native 的文档中复制这部分代码我不知道如何正确使用它,请您建议我。如果我想在用户选择时关闭选择器的表单,我该如何在 Picker 中使用 handleSubmit?

标签: javascript react-native picker setstate


【解决方案1】:

根据您在问题中提供的代码,我认为您是 react-native 的新手。您的代码错误(您刚刚复制并粘贴了代码)。您的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!
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多