网站首页 » 转载 » react div 多选

react div 多选

April 9, 2019 转载
export default class SelectDiv extends Component {
  state = {
    selects: [],
    renList: [{ name: 'n1' }, { name: 'n2' }, { name: 'n3' }],
  }
  handleCheck = ({ name }) => {
    this.setState(({ selects }) => ({
      selects: selects.includes(name)
        ? selects.filter(item => item !== name)
        : [...selects, name],
    }))
  }
  selectAll = () => {
    this.setState(({ renList }) => ({
      selects: renList.map(item => item.name),
    }))
  }
  cancelSelectAll = () => {
    this.setState(() => ({
      selects: [],
    }))
  }
  render() {
    const { selects: selects, renList } = this.state
    return (
      <div>
        <button onClick={this.selectAll}>选中全部</button>
        <button onClick={this.cancelSelectAll}>取消全部</button>
        {renList.map(subItem => (
          <div>
            <div
              key={subItem.name}
              className={`${css.sunKind} ${
                selects.includes(subItem.name) ? css.active : ''
              }`}
              onClick={() => this.handleCheck(subItem)}
            >
              {subItem.name}
            </div>
          </div>
        ))}
      </div>
    )
  }
}