javascript - 在reactjs中以编程方式取消选中复选框

标签 javascript reactjs checkbox

我正在搞乱复选框,我想知道有没有一种方法可以通过调用函数取消选中单击按钮时的复选框?如果是这样?我该怎么做?

<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/

相关文章:

javascript - 在图像区域创建链接

php - 无法将复选框值发送到 MySQL 数据库?

javascript - 如何使用 excel 中的列进行解析以将其转换为 JSON

javascript - 在javascript中如何将字符串转换为数组并将数组转换为字符串

javascript - 为什么 getElementById 对文档元素内的元素不起作用?

Python Django "and/or"在数据库中搜索

forms - 基金会 5 & 遵守 : a custom validator for a set of checkboxes?

javascript - 我的 URL 末尾的 ?reqp=1&reqr=... 是什么?恶意?

javascript - 如何在被透明 div 覆盖时突出显示 HTML 文本?

javascript - React onWheel 处理程序无法阻止Default,因为它是一个被动事件监听器