antd checkbox 全选与单选如何维护数据?

官网的组件使用方式(checkbox 全选与单选)组件使用方法
示例代码:

import { Checkbox } from 'antd';

const CheckboxGroup = Checkbox.Group;

const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = ['Apple', 'Orange'];

class App extends React.Component {
  state = {
    checkedList: defaultCheckedList,
    indeterminate: true,
    checkAll: false,
  };

  onChange = checkedList => {
    this.setState({
      checkedList,
      indeterminate: !!checkedList.length && checkedList.length < plainOptions.length,
      checkAll: checkedList.length === plainOptions.length,
    });
  };

  onCheckAllChange = e => {
    this.setState({
      checkedList: e.target.checked ? plainOptions : [],
      indeterminate: false,
      checkAll: e.target.checked,
    });
  };

  render() {
    return (
      <div>
        <div style={{ borderBottom: '1px solid #E9E9E9' }}>
          <Checkbox
            indeterminate={this.state.indeterminate}
            onChange={this.onCheckAllChange}
            checked={this.state.checkAll}
          >
            Check all
          </Checkbox>
        </div>
        <br />
        <CheckboxGroup
          options={plainOptions}
          value={this.state.checkedList}
          onChange={this.onChange}
        />
      </div>
    );
  }
}

ReactDOM.render(<App />, mountNode);

那么如果checkbox的选项数据是后端回传的应该如何处理呢?也就是示例代码中plainOptions与defaultCheckedList的数据是由后端回传的。

并且真实情况plainOptions与defaultCheckedList中的数据不会这么单一,会包含一些html标签。

阅读 6.6k
1 个回答

plainOptions和defaultCheckedList写在state里面,初始化为空数组,然后在didmount里面请求后端的数据setState就行了,defaultCheckedList肯定是单一的key,plainOptions复杂的话自定义渲染就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题