全网react+飞冰(ice)UI框架组件实例(5)-Tree实例

263 阅读1分钟

关于Tree这个组件,在回显的时候遇到了问题,反正搞了多次,回显没有成功,因为这个框架目前用的人比较少,也百度不到只能看文档,一个个试,最终还是做出来,所以分享希望对用这个框架的朋友有点帮助吧

// 初使化数据
const DEFAULT_DATA = {
  tableData: {
    data: {
      pageNum: 1,
      total: 0,
      size: 0
    },
  },
  updateList: {
    content: ""
  }
};

// 定义字段
const { dataSource = DEFAULT_DATA } = props;
const [updateList, setupdateList] = useState(dataSource.updateList);
const [menutableData, setmenutableData] = useState(dataSource.tableData)
// 选中的菜单列表或已拥有的菜单列表
const [menuList, setmenuList] = useState([])

// html结构
<Form labelAlign="left" value={updateList} responsive>
    <Form.Item colSpan={18}>
      <Tree checkable
        // defaultExpandAll
        defaultCheckedKeys={menuList}
        checkedStrategy='all'
        onCheck={(checkedKeys, extra) => {
          var symenus = []
          extra.checkedNodes.forEach(item => {
            symenus.push(item.key)
          });
          extra.indeterminateKeys.forEach(item => {
            symenus.push(item)
          });
          setmenuList(symenus)
          // setmenuList(checkedKeys)
        }}
        dataSource={menutableData.data.list} />
    </Form.Item>
</Form>
// 数据请求
const menupage = () => {
    request.get(`${request.menuSelect}`, {
    }).then(function (response) {
      children(response.data.list)
      setmenutableData(response)
    }).catch(function (error) {
      common.NoticeError('数据获取', '数据获取失败', error)
    });
}
const children = (data) => {
    var IShave = false;
    data.forEach(item => {
      item.key = item.id
      item.label = item.name
      item.value = item.id
      if (item.symenus.length != 0) {
        item.children = item.symenus
        IShave = true;
      } else {
        item.children = []
      }
      if (IShave) {
        children(item.children)
      }
    });
  }