reactjs - React:状态是在 api 调用之后设置的,而不是之前
问题描述
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 ?
解决方案
推荐阅读
- android - Android 写入 /sdcard/
- maven - 如何在 openLiberty maven 构建中包含第三方库
- javascript - 使用 d3.js v.4 加载 csv 文件
- c# - ASP.NET Core 2.1:在 HTTP POST 验证失败后导航回页面显示浏览器错误
- javascript - 清除上次创建的计时器对象的超时
- java - 在 Java 中,如果线程仅在同步方法中递增它,我是否需要将 int 字段标记为 volatile?
- javascript - 使数据属性表现得像一个锚
- batch-file - 批次:“如果其他”。这段代码有什么问题吗?
- html - 注册为胡言乱语的日文字符
- javascript - sweetalert1 JS 插件迁移到 Sweealert2