javascript - 无法使用 setState 动态更改复选框的状态

标签 javascript reactjs setstate

下面是一个简单的 React 组件,复选框的初始状态为 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 更改复选框状态。

这是一个fiddle

最佳答案

通过提供 defaultChecked 而不是 checked 您正在创建 uncontrolled component . Uncontrolled 表示你不能通过改变defaultChecked来控制它。 要从代码中更改复选框的状态,您需要为其提供 checked

这是更新的 fiddle :http://jsfiddle.net/p4ps7nob/

要考虑的另一件事是:Props in getInitialState Is an Anti-Pattern

关于javascript - 无法使用 setState 动态更改复选框的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228233/

相关文章:

javascript - 解析一个URL(作为字符串)并将每个子页面拼接成一个数组

javascript - "observing from outside shadow DOM should not see mutations in the shadow"是什么原因

javascript - 单击按钮并更改 VueJS 2 中的组件

javascript - Python网络浏览器: Disable Javascript?

javascript - 基于对象数组形成组件

javascript - 在对象数组的 react setState 中使用扩展运算符

reactjs - react hooks setState完成后如何解决promise?

javascript - React 中导出模块的语法差异

javascript - 在收到特定操作时将商店重置为初始状态

node.js - 如何部署分离的前端和后端?