5、谷粒后台用户、角色管理组件
基本布局
1 | <Table |
通过rowSelection
指定表格为radio
类型。onRow
为点击行时的回调函数。
1 | onRow = (role) => { |
树形结构
在AntD4中通过使用treeData
来指定树中的数据
1 | <Tree |
1 | getTreeNodes = (menuList) => { |
得到最新状态,通过在生命周期getDerivedStateFromProps
返回需要设置的状态。(componentWillReceiveProps
即将废弃)
1 | static getDerivedStateFromProps(nextProps, prevState) { |
大体思路如下:
当每次点击一行数据时,都会触发父组件
onRow
事件。而在这个组件中进行了重新为role
对象赋值的操作。1
2
3
4
5
6
7
8
9
10
11
12onRow = (role) => {
return {
onClick: (event) => {
// 点击行
// console.log('row onClick()', role)
// alert('点击行')
this.setState({
role
})
}
}
}因此,他也会重新将role对象传递给子组件
子组件由于具有
getDerivedStateFromProps
生命周期,因此每次接收到新数据都会触发该生命周期。此时,在此生命周期就可以进行判断。当传入对象与当前
state
记录的对象不一致时则更新数据。将自身记录的对象替换为新传入的对象。(选中的Keys
也是替换)1
2
3
4
5
6
7
8
9
10
11static getDerivedStateFromProps(nextProps, prevState) {
// 判断传入对象与当前记录的对象是否是同一个对象
if (nextProps.role !== prevState.role) {
return {
// 将刚传入的值赋值给已保存的值
checkedKeys: nextProps.role.menus,
role: nextProps.role
}
}
return null
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline