下面是一个简单的反应组件,其初始状态为checkbox。
我正在尝试使用setState()动态更改它。这是行不通的。
这是我的代码:
var Hello = React.createClass({
getInitialState: function(){
return {
checked : this.props.checked.toString() === "false" ? false : true
};
},
render: function() {
console.log("rendering==");
return <div><input type = "checkbox" defaultChecked = {this.state.checked}/></div>;
}
});
var compRef = React.render(<Hello checked = "false" />, document.body);
Trying to change state after rendering the component
setTimeout(function(){
compRef.setState({checked: true})
},3000);
我无法使用setState更改复选框状态。
这是fiddle
答案 0 :(得分:2)
通过提供defaultChecked
代替checked
,您正在创建uncontrolled component。
不受控制表示您无法通过更改defaultChecked
来控制它。
要从代码更改复选框的状态,您需要为其提供checked
。
这是更新的小提琴:http://jsfiddle.net/p4ps7nob/
答案 1 :(得分:1)
如果您要切换复选框输入的状态,则需要将onChange
与defaultChecked
处理程序一起使用,而不是使用{{1}}。