【发布时间】:2015-07-28 03:25:39
【问题描述】:
首先,我正在做一份调查问卷,并决定开始学习 React.js。问卷的每个步骤都包括一个问题和一个是/否单选按钮组,以及导航按钮。这是jsfiddle。问题组件非常简单,我在父组件中传递 formData 并将数据函数保存到它。
问题组件的代码
var Question = React.createClass({
getInitialState: function() {
return {
}
},
createMarkup: function(html) {
return {
__html: html
};
},
render: function() {
var subtitle = this.props.subtitle || '';
var name = this.props.name;
if (this.props.formData[name] === undefined) {
var answer_yes = null;
var answer_no = null;
} else {
answer_yes = this.props.formData[name] == "yes" ? true : null;
answer_no = this.props.formData[name] == "no" ? true : null;
}
console.log(answer_yes);
console.log(answer_no);
return (
<div className="container-question">
<label className="default" dangerouslySetInnerHTML={this.createMarkup(this.props.question)}></label>
<span className="alert subtitle" dangerouslySetInnerHTML={this.createMarkup(subtitle)}></span>
<div className="form-group form-group-radio">
<div className="row">
<div className="col-xs-4">
<input type="radio" id={name + "_yes"} name={name} value="yes" defaultChecked={answer_yes} onChange={this.props.saveData}/><label htmlFor="yes">Yes</label><br></br>
<input type="radio" id={name + "_no"} name={name} value="no" defaultChecked={answer_no} onChange={this.props.saveData}/><label htmlFor="no">No</label>
</div>
</div>
</div>
</div>
);
}
});
问题是,当您在第一个问题上选择答案并单击下一步时,第二个问题上的无线电控件会随之改变,当您首先回答第二个问题时也会发生同样的情况。我将 defaultChecked 的布尔变量作为局部变量存储在渲染函数中,并将它们记录在控制台中。
我犯了什么明显的错误吗?任何帮助表示赞赏。
【问题讨论】:
标签: reactjs radio radio-group