我做一个组件能够动态加载省、市、县地区信息,比较奇怪的是我必须点击父选项两次,子选项才显示。点击一次的话子选项不显示,只显示一片空白区域。
//获取子地区
subLocation = (parentId) => {
let places = [];
axios.get("/subLocation/" + parentId).then(response => {
if (response.status === 200 && response.data !== '') {
response.data.forEach((item) => {
let tem = {};
tem.value = item.value + '';
tem.label = item.label;
tem.isLeaf = item.isleaf;
places.push(tem);
})
}
}).catch(error => {
console.error(error)
});
return places;
};
//获取省份
province = () => {
let province = [];
axios.get("/province").then(response => {
if (response.status === 200 && response.data !== '') {
response.data.forEach((item) => {
let tem = {};
tem.value = item.value + '';
tem.label = item.label;
tem.isLeaf = item.isleaf;
province.push(tem);
})
}
}).catch(error => {
console.error(error)
});
return province;
}
//组件定义
import {Cascader} from 'antd';
import React from 'react'
import Options from './Data'
const province = Options.province();
class Location extends React.Component {
loadData = (selectedOptions) => {
const targetOption = selectedOptions[selectedOptions.length - 1];
let subLocation = Options.subLocation(targetOption.value);
targetOption.children = subLocation;
this.setState({
locations: [...this.state.locations]
});
};
constructor(props) {
super(props);
this.state = {
locations: province
};
}
render() {
return (
<Cascader
options={this.state.locations}
loadData={this.loadData}
/>
);
}
}
export default Location;
subLocation
方法返回一个promise
。补充:
加上这个属性试试?