关于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)
}
});
}