【发布时间】:2015-07-05 07:22:58
【问题描述】:
假设代码(称为 Answers 的子组件)动态生成 3 个 div(基于映射的数据集),每个 div 包含一个文本框和一个提交按钮。
如果用户在第二个文本框中键入内容并单击提交,我如何在 buttonSubmit 处理程序(位于父组件中)中保持正确的绑定(从第二个文本框中获取文本)?
假设我的目标是在 buttonSubmit 处理程序的 alert(comment) 中查看正确的文本......我该如何实现呢?谢谢!
var Parent = React.createClass({
buttonSubmit: function(e){
e.preventDefault();
var comment = $(this).closest('.answer-container').find('.answer-textArea').val(); // get comment text
alert(comment);
},
render: function(){
return (
<div>
<Answers data={this.state.answers} onButtonSubmit={this.buttonSubmit} />
</div>
);
}
});
var Answers = React.createClass({
render: function(){
var self = this;
var answerNodes = this.props.data.map(function(answer){
return (
<div className="answer-container">
<div className="answer-comment">
<textarea className="answer-textArea" placeholder="Comment must be more than 5 words ..."></textarea>
</div>
<div className="answer-rateIt">
<input data-id={answer.AnswerID} type="number" className="rating" />
<br /><br />
<button id={answer.AnswerID} className="buttonSubmit" onClick={self.props.onButtonSubmit} >Submit</button>
</div>
</div>
);
});
return(
<div>
{answerNodes}
</div>
);
}
});
【问题讨论】:
-
为什么不用
Answers创建一个Answer组件以便进行事件处理?每个人都可以根据需要向父母提出一个事件。
标签: jquery button dynamic reactjs bind