e.target.value 在 React 中添加动态输入数据时未定义



每次单击按钮时,我都需要添加一个输入框(input-0,input-1...)。以下是相关代码。

//州

      this.state = {
        newText: {}
      };

添加动态输入文本的代码

      addInputText = () => {
        let dynamicTextsNo = Object.keys(this.state.newText).length;
        let newInputId = dynamicTextsNo+1;
        let dynamicTextArr = this.state.newText;
        let newTextId = 'input-'+dynamicTextsNo;
        dynamicTextArr[newTextId] = '';
        let newState = { ...this.state, newText: dynamicTextArr }
        this.setState( newState );
      }

用于呈现动态输入文本的代码。

      dynamicTextArea = () => {
        return Object.keys(this.state.newText).map( ( key ) => {
          return  ( <InputGroup key={key} borderType='underline'>
                      <Input placeholder='Type your text here' value={this.state.newText[key]} onChange={this.changeInput}/>
                    </InputGroup>
                  );
        });
      }

渲染函数

      render() {
        return <View>{this.dynamicTextArea()}</View>
      }

处理输入

  changeInput = (e) => {
    console.log( e.target.value ); // **this comes out to be undefined.**
  }

为什么 changeInput 函数中的 e.target.value 未定义?

附言完整代码的Jsfiddle链接:https://jsfiddle.net/johnnash03/9by9qyct/1/

与浏览器文本输入元素不同,传递给 React Native TextInput.onChange回调的 event 参数没有名为 target 的属性。

相反,请使用

<TextInput
  onChange={(event) => event.nativeEvent.text}
/>

<TextInput
  onChangeText={(text) => text}
/>

你必须这样使用bind <Input placeholder='Type your text here' value={this.state.newText[key]} onChange={this.changeInput.bind(this)}/>

相关内容

  • 没有找到相关文章

最新更新