我正在搞乱复选框,我想知道有没有一种方法可以通过调用函数取消选中单击按钮时的复选框?如果是这样?我该怎么做?
<input type="checkbox" className="checkbox"/>
<button onClick={()=>this.unCheck()}
如何以编程方式取消选中复选框,如果我有多个使用 map 函数动态生成的复选框怎么办。 如果需要,我该如何取消选中它们?
最佳答案
复选框有属性 checked
你可以用它来切换复选框的状态。
可能的方法:
1- 您可以使用 ref
复选框,以及 onClick
按钮,通过使用 ref
你可以取消选中该框。
2- 您可以使用受控元素,这意味着将复选框的状态存储在 state
变量中,并在单击按钮时更新它。
通过使用 ref 检查此示例,为每个复选框分配一个唯一的 ref
然后在 onClick 函数中传递该项目的索引,使用该索引来切换特定 复选框
:
class App extends React.Component{
constructor(){
super();
this.state = {value: ''}
}
unCheck(i){
let ref = 'ref_' + i;
this.refs[ref].checked = !this.refs[ref].checked;
}
render(){
return (
<div>
{[1,2,3,4,5].map((item,i) => {
return (
<div>
<input type="checkbox" checked={true} ref={'ref_' + i}/>
<button onClick={()=>this.unCheck(i)}>Toggle</button>
</div>
)
})}
</div>
)
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='app'/>
检查这个controlled element的例子,意味着将checkbox的state
存储在state
变量中,点击按钮改变值那:
class App extends React.Component{
constructor(){
super();
this.state = {value: []}
}
onChange(e, i){
let value = this.state.value.slice();
value[i] = e.target.checked;
this.setState({value})
}
unCheck(i){
let value = this.state.value.slice();
value[i] = !value[i];
this.setState({value})
}
render(){
return (
<div>
{[1,2,3,4,5].map((item,i) => {
return (
<div>
<input checked={this.state.value[i]} type="checkbox" onChange={(e) => this.onChange(e, i)}/>
<button onClick={()=>this.unCheck(i)}>Toggle</button>
</div>
)
})}
</div>
)
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='app'/>
关于javascript - 在reactjs中以编程方式取消选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43602665/