React:状态是在api调用之后设置的,而不是之前

时间:2018-05-22 05:38:47

标签: reactjs

我有网格组件,我有过滤器按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?

0 个答案:

没有答案