道具更改后再次反应调用API?

时间:2018-12-17 07:00:18

标签: reactjs redux

我有一个使用以下代码在componentDidMount()上调用API服务的项目

byte[] byteFinal ={97, 98, 64, 99, 100};
        char ch;
        StringBuilder str = new StringBuilder();
        for(byte b : byteFinal){
            ch  = (char)b;
            System.out.println("ch:"+ch);
            str.append(ch);

        }
        System.out.println(str.toString());

我的组件将过滤器从我的redux存储传递到API调用。

但是,如果过滤器改变了另一个组件怎么办?发生这种情况后,我似乎找不到正确的生命周期方法来重新调用api。

2 个答案:

答案 0 :(得分:1)

如果要在本地解决问题,则应使用componentDidUpdate方法。

componentDidUpdate(oldProps, newProps) {
    if (this.notEqual(oldProps.filter, newProps.filter)) {
        apiService.get(this.props.filters);
    }
}

但是我会考虑将数据提升到Redux并发送一个异步操作,以更新来自过滤器更改事件处理程序的api数据。

答案 1 :(得分:0)

答案

让它可以使用

componentDidUpdate(prevProps) {
    if(JSON.stringify(prevProps.filters) !== JSON.stringify(this.props.filters)) {
        // make API call
    }
}

使用JSON.stringify可确保2个空数组不算作不同数组。