iView Cascader 级联选择器怎么动态加载数据?
我用 iView 的 Cascader 做省市区三级联动,但数据是从接口异步拿的,直接赋值 options 没反应,控制台也不报错,是不是得用 loadData?试了下没搞明白怎么写。
现在代码是这样:
const [options, setOptions] = useState([]);
useEffect(() => {
fetch('/api/regions').then(res => res.json()).then(data => {
setOptions(data); // data 结构是标准的 { value, label, children } 格式
});
}, []);
return <Cascader options={options} />;
如果数据已经一次性全部返回了,你那么写应该没问题。你先 console.log 一下 data,看看拿到的到底是啥。
假设你数据确实拿到了但就是渲染不出来,试试这样:
如果你是想实现点击展开时才加载下一级(懒加载),那得用 loadData 属性,像这样:
懒加载的关键是:子节点的 children 要么不设,要么设空数组,有子节点时才会在点击时触发 loadData。
你先试试第一种,看是不是 value 类型的问题。