javascript - ReactJs 复选框 - 无法取消选中

标签 javascript checkbox reactjs

我正在尝试使用状态设置复选框的 checked 属性,使用 handleChange 函数更新代码:

getInitialState: function() {
    return {
        selected:0,
        contactId: 0
    };
},

handleChange: function(e) {
    var id = this.state.contactId;

    console.log(e.target.checked);

    if (e.target.checked === true){

        console.log('selected');

        contactChannel.publish({
                    channel: "contact",
                    topic: "selectedContact",
                    data: {
                        id: [id]
                    }});

    } else{

        basketChannel.publish({
            channel: "basket",
            topic: "removePersonFromBasket",
            data: {
                id: [id]
            }
        });


        console.log('deselected flag');


    }
},
render: function() {

    var id = this.state.contactId;
    var isSelected = this.state.selected;

    console.log(isSelected);

    return (
        <div className="contact-selector">
            <input type="checkbox"
                   checked={isSelected}
                onChange={this.handleChange} />
        </div>
    );
}

但是,一旦默认选中该复选框,我就无法取消选中它,谁能告诉我该怎么做?

非常感谢

最佳答案

handleChange 函数中,您始终为复选框的状态使用相同的值,但您需要将其反转。

将此添加到您的 handleChange 函数中:

handleChange:function(event){
    this.setState({selected: !this.state.selected}); //look at the !NOT sign

}

关于javascript - ReactJs 复选框 - 无法取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31849994/

相关文章:

function - ReactJs 全局辅助函数

javascript - 为什么我无法在 JavaScript 中获取导航器对象的属性计数?

javascript - 日期选择器默认从下一个可用月份开始

javascript - 看似有效的 JSON 上的 JSON.parse 错误

javascript - jQuery 禁用复选框上的下拉菜单单击并插入 TRUE/FALSE 值

html - 为什么重新加载页面时该复选框保持选中状态?

javascript - react : The `value` prop supplied to <select> must be a scalar value if `multiple` is false

javascript - javascript 中的作用域(为什么 $.post() 方法数组的作用域是本地的?)

java - 如何在 ListView 中保存多个动态生成的复选框的状态? (安卓Java)

javascript - Next.JS - "use client"指令产生错误