【发布时间】:2017-01-26 01:07:38
【问题描述】:
我需要在每次点击按钮时添加一个输入框(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/
【问题讨论】:
-
你能把你的代码上传到 JSFiddle.net 吗?这样可以更轻松地帮助您调试问题。
-
@KennyMeyer 我已经提供了完整代码的链接
-
@johndoe,我将您的代码修改为:jsfiddle.net/mrlew/gk55wLx1。但是changeInput没有错误。检查控制台。
-
@johndoe 改编版本,在输入处具有持久值:jsfiddle.net/mrlew/gk55wLx1/4
标签: reactjs react-native