我是采用以下方法来监听传入数据是否发生改变:
componentWillReceiveProps(nextProps) {
// 判断传入数据是否改变
if (JSON.stringify(nextProps.data) !== JSON.stringify(this.props.data)) {
// 取到车系数据
getSeriesTreeList({ brandid: nextProps.data.brandId }, (data) => {
let { carListData } = this.state;
// 取到车型数据
getModelList({ seriesid: nextProps.data.seriesId }, (modelData) => {
// 格式化车型数据
for (let i in modelData) {
modelData[i].value = modelData[i].vmid;
modelData[i].label = modelData[i].name;
}
// 格式化车系数据
for (let i in data) {
data[i].value = data[i].SeriesID;
data[i].label = data[i].name;
data[i].isLeaf = false;
// 组装车系下的车型
if (data[i].SeriesID === nextProps.data.seriesId) {
data[i].children = modelData
}
}
// 组装品牌下的车系
for (let i in carListData) {
if (carListData[i].value === nextProps.data.brandId) {
carListData[i].children = data;
}
}
let arr = [nextProps.data.brandId, nextProps.data.seriesId, nextProps.data.vmId];
this.setState({
carListData,
carTypeData: arr,
});
})
})
}
}
点击打开modal时,监听到数据改变就会调用接口查询详情,但是在关闭modal后,没有数据传入,此时调用接口时因为没有查询数据,系统就会报错。能有什么办法在关闭时不再调用接口?
呼唤远方
牛魔王的故事
随时随地看视频慕课网APP
相关分类