1.循环遍历出最深层子节点,存放在一个数组中
2.将后台返回的含有父节点的数组和第一步骤遍历的数组做比较
3.如果有相同值,将相同值取出来,push到一个新数组中
4.利用这个新的重组的数组给Tree组件selected赋值
const deepArr = [] //deepArr存放所有子节点的数组
//第一步骤:子节点放在一个数组中
const requestList = (data) => {
data && data.map(item => {
if (item.children && item.children.length > 0) {
requestList(item.children)
} else {
deepArr.push(item.id)
}
return null
})
return deepArr
}
//第2,3步骤的方法
const uniqueTree = (uniqueArr, Arr) => {
let uniqueChild = []
for (var i in Arr) {
for (var k in uniqueArr) {
if (uniqueArr[k] === Arr[i]) {
uniqueChild.push(uniqueArr[k])
}
}
}
return uniqueChild
}
//调用第2,3步骤的方法
const getRoleInfo = () => {
getData({ id: Id }).then(res => {
const ids = res.data
const uniqueChild = this.uniqueTree(ids, deepArr)
setCheckedKeys(uniqueChild)
})
}
<Tree
checkable
checkedKeys={checkedKeys}
defaultExpandedKeys={checkedKeys}
fieldNames={{
disabledDate = (current) => {
return current && current < moment().startOf('day').subtract(0, 'days');
}
disabledRangeTime = (_, type) => {
const { form: { getFieldValue } } = this.props
if (type === 'start') {
const nowHours = moment().hours()
const time = getFieldValue("time")
if (time && moment(time[0].format("YYYY-MM-DD")).valueOf() <= moment(moment().format("YYYY-MM-DD")).valueOf()) {
return {
disabledHours: () => this.range(0, nowHours),
};
}
}
}
onOpenChange = (status) => {
const { form: { getFieldValue, setFields } } = this.props
const time = getFieldValue("time")
if (!status) {
if (time && (moment(time[0]).valueOf() + 10000) < moment().valueOf()) {
setFields({
time: {
value: null,
errors: [n