我有一个使用以下代码在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。
答案 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个空数组不算作不同数组。