我有网格组件,我有过滤器按Id
列进行过滤。当我在其中写入内容时,此代码将触发。
filterChange(event) {
debugger;
const test = event.filter.filters[0];
const column = test.field;
const value = test.value;
this.setState(prevState => ({
...prevState,
filter: {
...prevState.filter,
query: {
...prevState.filter.query,
filter: {
...prevState.filter.query.filter,
JobId: value
}
}
}
}))
console.log("before");
console.log(this.state.filter.query);
// api call to get new data
this.props.getAllProcesses(this.state.filter);
}
我的状态对象如下所示
this.state = {
filter:{
pageable: this.state ? this.state.pageable : {
buttonCount: 5,
info: true,
type: 'numeric',
pageSizes: true,
previousNext: true
},
pagingOptions:{
pageSize: 5,
skip: 0
},
query:{
collectionName: "",
filter: {},
sort: {},
projection: {},
take: 0,
skip: 0,
includeTotalCount: true,
context: null,
}
}
};
当状态发生变化时,query object
中的过滤器仍有旧数据,this.props.getAllProcesses(this.state.filter)
从api获取错误数据,因为query filter
仍为空
当我在query filter
生命周期中检查componentDidUpdate
时,状态设置正确。
componentDidUpdate(prevProps, prevState) {
console.log("after");
console.log(this.state.filter.query);
}
所以我的问题是,在我的state
设置正确后,我怎么或何时打电话给我的api?