3

下面是一个简单的反应组件,复选框的初始状态为 false。

我正在尝试使用 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 更改复选框状态。

这是一个小提琴

4

2 回答 2

3

通过提供defaultChecked而不是checked您创建不受控制的组件不受控制意味着您无法通过更改来控制它defaultChecked。要从代码更改复选框的状态,您需要提供checked它。

这是更新的小提琴:http: //jsfiddle.net/p4ps7nob/

要考虑的另一件事是:getInitialState 中的 Props 是一种反模式

于 2015-05-14T12:39:28.493 回答
1

如果要切换复选框输入的状态,则需要使用checked处理onChange程序而不是使用defaultChecked.

于 2015-05-14T02:41:16.467 回答