【问题标题】:React-Native: Access to key prop in TextInputReact-Native:访问 TextInput 中的关键道具
【发布时间】:2020-07-28 20:48:34
【问题描述】:

我尝试访问 TextInput 中的 key 属性以将其保存在 state 中(然后在 Redux 中)。我在一个数组中创建了很多 TextInput 字段,就像我从第一个屏幕获得的一样:

render() {
    const { playerAmount } = this.props;
    var textBoxes = [];
    for (var i = 0; i < playerAmount; i++) {
      var placeholderText = 'Player ' + (i + 1);
      textBoxes.push(
        <TextInput
          key = {i+1}
          onChangeText={(text) => {
            const Player = Object.assign({}, this.state.Player, { playerName: text, playerNumber: this.props.key});
            this.setState({ Player });
          }}
          placeholder={placeholderText}
          placeholderTextColor="grey"
        >
        </TextInput>

      );

现在我尝试使用 key 属性设置 playerNumber 的状态。我试过key / {key} / this.props.key

构造函数:

  constructor(props) {
    super(props);
    this.state = 
    {
      Player: 
      {
        playerName: "",
        playerNumber: 0
      }
    }

  }

如您所见,我对 React-Native 还是很陌生。你知道如何解决这个问题吗?

非常感谢! :)

【问题讨论】:

    标签: react-native key textinput


    【解决方案1】:

    为什么不这样做呢?

    render() {
      const { playerAmount } = this.props;
      var textBoxes = [];
      for (var i = 0; i < playerAmount; i++) {
        var placeholderText = 'Player ' + (i + 1);
        const key = i+1;
        textBoxes.push(
              <TextInput
                  key = {key}
                  onChangeText={(text) => {
                    const Player = Object.assign({}, this.state.Player, { playerName: text, playerNumber: key});
                    this.setState({ Player });
                  }}
                  placeholder={placeholderText}
                  placeholderTextColor="grey"
              >
              </TextInput>
        );
      }
    }
    

    【讨论】:

    • 非常感谢!如果我将 key = {i+1} 放入 JSX 元素中,为什么它会这样工作?谢谢! :-)
    【解决方案2】:
    class Firebase extends React.Component{
      state={
        name:'',
        number:'',
    
      }
      onChangeTextInput = key => val => {
        this.setState({[key]:val})
      }
      render(){
        return(
          <View>
            <TextInput
            value={this.state.name}
            onChangeText={this.onChangeTextInput('name')}
            />
             <TextInput
            value={this.state.number}
            onChangeText={this.onChangeTextInput('number')}
            />
          </View>
        )
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 2020-08-25
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多