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
}