// 第二级
const [guardParams, setGuardarams] = useState([]);
const { data: selectSecondData, loading: selectSecondLoading, run: selectSecondRun, error: selectSecondError } = useRequest(selectSecond, {
manual: true,
onSuccess: res => {
setGuardarams(res.data.list);
},
});
if (selectSecondError) {
message.error(selectSecondError);
}
// 第三级
const [modelParams, setModelarams] = useState([]);
const { data: selectThirdData, loading: selectThirdLoading, run: selectThirdRun, error: selectThirddError } = useRequest(selectThird, {
manual: true,
onSuccess: res => {
setModelarams(res.data.list);
},
});
if (selectThirddError) {
message.error(selectThirddError);
}
const secondData = selectSecondData?.data.list
const thirdData = selectThirdData?.data.list
const loadData = (selectedOptions: any) => {
const targetOption = selectedOptions[selectedOptions.length - 1];
const id = targetOption.value;
if(selectedOptions.length === 1) {
selectSecondRun(id);
if( secondData !== undefined) {
targetOption.children = [];
secondData.forEach((element: any) => {
targetOption.children.push({
"value": element.id,
"label": element.name,
"isLeaf": false,
})
});
setAppParams(targetOption)
}else{
console.log("hahahha")
}
} else if(selectedOptions.length === 2) {
selectThirdRun(id)
targetOption.children = [];
if(thirdData !== undefined) {
thirdData.forEach((element: any) => {
targetOption.children.push({
"value": element.id,
"label": element.name,
"isLeaf": true,
})
});
setAppParams(targetOption)
}
}
};
可以在
onChange
的function里面进行children的数据新增,在loadData
的function做loading效果的处理即可。下面是部分代码:
options
为一级数据。