如何在此处更改复选框的状态?

时间:2019-06-11 12:12:51

标签: mysql node.js reactjs checkbox

通过复选框的activation status事件,我已经能够更改数据库中companies的{​​{1}}。现在,我无法切换复选框的状态,这里我缺少什么?

我看过各个站点,但找不到解决方案。

这是我在其中印刷公司的代码。

onClick

这是我的职责。

{this.state.allCompanies.map(com => (
                <tr>
                  <td>{com.cname} </td>
                  <td>
                    <a>
                        <input
                          type="checkbox"
                          name="active"
                          checked={com.is_active == 1 ? "true" : ""}
                          onClick={
                            (() => {
                              this.setState({ cked: !this.state.cked });
                            },
                            e => this.handleActivated(e, com.cid))
                          }
                        />
                    </a>
                  </td>
                </tr>
              ))}

1 个答案:

答案 0 :(得分:1)

您正在将两个函数传递给onClick,据我所知(尽管我无法为此提供源代码或告诉您原因),react只会使用您赋予props的最后一个值。这就是为什么设置cked的状态可能无效的原因。

我建议只给它1个这样的功能:

onClick={
    (e) => {
        this.setState({ cked: !this.state.cked });
        this.handleActivated(e, com.cid)
    }
}

如果只想在setState完成后执行第二个(因为它是异步的),则应该使用setState的回调函数。


onClick={
    (e) => {
        this.setState({ cked: !this.state.cked }, () => {
            this.handleActivated(e, com.cid)
        });
    }
}