【发布时间】:2020-06-30 22:27:57
【问题描述】:
我正在尝试在 reactJs 中实现选择/取消选择所有功能,但无法实现。
我已使选择/取消选择所有主标题复选框功能,并且单个元素也可以选择或取消选择。
import React, { Component } from 'react'
import ReactDOM from 'react-dom'
class Box extends Component{
constructor(props){
super(props);
this.state = {
allChecked: false,
list: [
{id:1, name: "item1", isChecked: false},
{id:2, name: "item2", isChecked: false},
{id:3, name: "item3", isChecked: false},
],
};
}
handleChange = (e) => {
let list = this.state.list;
let allChecked = this.state.allChecked;
if(e.target.value === "checkAll"){
list.forEach(item => {
item.isChecked = e.target.checked;
allChecked = e.target.checked;
});
}
else{
list.find( item => item.name === e.target.name).isChecked = e.target.checked;
}
this.setState({list:list, allChecked: allChecked});
}
renderList = () => {
return this.state.list.map(item =>
<div>
<input key={item.id} type="checkbox" name={item.name} value={item.name} checked={item.isChecked} onChange={this.handleChange} />
<label>{item.name}</label>
</div>
)
}
render(){
return(
<div>
<input type="checkbox"
value="checkAll"
checked={this.state.allChecked}
onChange={this.handleChange} />Check all
<br/>
{this.renderList()}
</div>
);
}
}
ReactDOM.render(<Box/>, document.getElementById('root'));
直截了当,我希望这种 (https://jsfiddle.net/52uny55w/) 类型的功能使用纯 Javascript,但由于某些原因不使用 jquery。
【问题讨论】:
-
我试试你的代码,一切正常。问题出在哪里?
-
@Wicak 我希望该 CheckAll 复选框也被选中,当我检查所有这些项目并希望该 CheckAll 复选框也被取消时当我取消选中其中一项时检查。
-
Codesandbox 中缺少该代码,我只是重新创建了相同的代码以供参考。 codesandbox.io/s/frosty-curie-75u6d?file=/src/App.js:395-833
-
有人有按钮的工作示例吗?
标签: javascript reactjs