React JS 复选框无法识别第一个切换

React JS checkbox does not recognize the first toggle

我刚刚开始检查和学习 React js,并尝试用它做一些简单的事情。我有一个简单复选框的问题 - 我创建了一个事件来侦听更改并更新它的状态,但问题是应用程序无法识别第一次切换复选框。 例如: - 我用默认选中状态渲染它 - 我点击它取消选中它,控制台记录 true(应该是 false) - 我再次单击它进行检查,控制台记录 true(现在这是正确的 - 从那里开始 returns 正确的状态。

这是我的示例代码:

var CheckboxElement = React.createClass({

  handleChange: function(e) {

    this.setState({
      checked: !e.target.checked
    });

    console.log(this.state.checked);
  },

  getInitialState: function() {
    return {checked: false};
  },

  render: function() {
    return (
      <label><input type="checkbox" defaultChecked={this.state.checked} onChange={this.handleChange} />{this.props.optionVal}</label>
    )
  }
});

ReactDOM.render(
  <CheckboxElement optionVal="Test" />,
  document.getElementById('container')
);

这是我的代码的 jsFiddle: https://jsfiddle.net/velio84/zro3x9eg/1/

您可以检查浏览器的控制台以查看输出。

如有任何帮助,我们将不胜感激。

在这种情况下您不需要添加 !,因为当您首先检查时 e.target.checked 值将是 false(或 true 这取决于初始值state) 和 state 将具有值 true (!false === true) 或 false(!true === false),正如我写的那样,它取决于您为 defaultChecked 设置的初始值属性

this.setState({
  checked: e.target.checked
});

Example