Javascript 在Reactjs中选中/取消选中属性onChange复选框

Javascript 在Reactjs中选中/取消选中属性onChange复选框,javascript,jquery,reactjs,Javascript,Jquery,Reactjs,我的反应组件有问题。我有像这样的定制样式的复选框 我想单击我的组件或标签以选中或取消选中输入 目前,它只在基本样式上工作,只有在我完全点击输入的情况下 如何在正确更改后更改选中状态 代码: 非常感谢您的帮助。您的复选框缺少一些使其正常工作所需的道具。您需要能够判断复选框是否已选中或未使用道具或状态。您还需要为每个复选框指定一个值,这样,当您选中它时,您实际上将有一个值可以使用。最后,您需要一个onChange道具,它将在单击复选框时出现。此函数应更新控制是否选中特定复选框的任何状态。下面是为re

我的反应组件有问题。我有像这样的定制样式的复选框

我想单击我的组件或标签以选中或取消选中输入

目前,它只在基本样式上工作,只有在我完全点击输入的情况下

如何在正确更改后更改选中状态

代码:


非常感谢您的帮助。

您的复选框缺少一些使其正常工作所需的道具。您需要能够判断复选框是否已选中或未使用道具或状态。您还需要为每个复选框指定一个值,这样,当您选中它时,您实际上将有一个值可以使用。最后,您需要一个onChange道具,它将在单击复选框时出现。此函数应更新控制是否选中特定复选框的任何状态。下面是为react创建的复选框输入示例

<input name={ this.props.name }
      type="checkbox"
      checked={ this.props.checked }
      className="cui-checkbox-input"
      onChange={ this._onChange }
      value={ this.props.value } />
好的,我找到了解决办法


我在组件中的标签中添加了
onClick={this.\u onChange}
,它可以工作

嗯,我想我理解你。我用checked状态对代码做了一点修改,但我还是要在更改后再修改这个状态?如果你有时间的话,现在可以看看这个,让我知道我在哪里犯了错误吗?太棒了!执行onChange函数的一种干净方法是只执行
this.setState({checked:!this.state.checked})
/* Base for label styling */
[type="checkbox"]:not(:checked),
[type="checkbox"]:checked,
[type="radio"]:not(:checked),
[type="radio"]:checked{
  position: absolute;
  left: -9999px;
}
[type="checkbox"]:not(:checked) + label,
[type="checkbox"]:checked + label,
[type="radio"]:not(:checked) + label,
[type="radio"]:checked + label{
  position: relative;
  padding-left: 25px;
  cursor: pointer;
}

/* checkbox/radio aspect */
[type="checkbox"]:not(:checked) + label:before,
[type="checkbox"]:checked + label:before,
[type="radio"]:not(:checked) + label:before,
[type="radio"]:checked + label:before{
  content: '';
  position: absolute;
  left:0; top: 50%;
  width: 1rem; height:1rem;
  border: 1px solid #aaa;
  background: #fff;
  box-shadow: inset 0 1px 3px rgba(0,0,0,.3);
  transform: translateY(-50%);
}
[type="radio"]:not(:checked) + label:before,
[type="radio"]:checked + label:before{
  border-radius:100%;
}
/* checked mark aspect */
[type="checkbox"]:checked + label:after {
  content: '✓';
  position: absolute;
  top: 50%;
  left: 0px;
  font-size: 1rem;
  line-height: 0.8;
  color: #e71558;
  transition: all .2s;
  transform: translateY(-50%);
}
/* checked radio aspect */
[type="radio"]:checked + label:after {
  content: '•';
  position: absolute;
  top: 6px;
  left: 2px;
  font-size: 15px;
  line-height: 0.8;
  color: #e71558;
  transition: all .2s;
  //transform: translateY(-50%);
  text-align: center;
}
/* checked mark aspect changes */
[type="checkbox"]:not(:checked) + label:after,
[type="radio"]:not(:checked) + label:after{
  opacity: 0;
  transform: scale(0);
}
[type="checkbox"]:checked + label:after,
[type="radio"]:checked + label:after {
  opacity: 1;
  //transform: scale(1);
}
/* disabled checkbox/radio */
[type="checkbox"]:disabled:not(:checked) + label:before,
[type="checkbox"]:disabled:checked + label:before,
[type="radio"]:disabled:not(:checked) + label:before,
[type="radio"]:disabled:checked + label:before{
  box-shadow: none;
  border-color: #bbb;
  background-color: #ddd;
}
[type="checkbox"]:disabled:checked + label:after,
[type="radio"]:disabled:checked + label:after{
  color: #999;
}
[type="checkbox"]:disabled + label,
[type="radio"]:disabled + label{
  color: #aaa;
}
/* accessibility */
[type="checkbox"]:checked:focus + label:before,
[type="checkbox"]:not(:checked):focus + label:before,
[type="radio"]:checked:focus + label:before,
[type="radio"]:not(:checked):focus + label:before{
  border: 1px dotted blue;
}

/* hover style just for information */
label:hover:before {
  border: 1px solid #4778d9!important;
}
<input name={ this.props.name }
      type="checkbox"
      checked={ this.props.checked }
      className="cui-checkbox-input"
      onChange={ this._onChange }
      value={ this.props.value } />
_onChange: function(event) { 
   // do stuff using the event to grab needed values
}