Javascript 如何解决承诺拒绝:错误:React Native中超出了最大更新深度?

Javascript 如何解决承诺拒绝:错误:React Native中超出了最大更新深度?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,CouponStack.js const优惠券={ 屏幕:在屏幕上, 参数:{updated:null}, 导航选项:({navigation})=>({ }), }; 常数CouponDetail={ 屏幕:CouponDetailScreen, 导航选项:()=>({ }), }; const CouponStack=createStackNavigator( { 息票 CouponDetail, }, { initialRouteName:“优惠券”, 导航选项:{ }, }, ); 导出

CouponStack.js

const优惠券={
屏幕:在屏幕上,
参数:{updated:null},
导航选项:({navigation})=>({
}),
};
常数CouponDetail={
屏幕:CouponDetailScreen,
导航选项:()=>({
}),
};
const CouponStack=createStackNavigator(
{
息票
CouponDetail,
},
{
initialRouteName:“优惠券”,
导航选项:{
},
},
);
导出默认CouponStack;
Index.js

导出默认类索引扩展React.Component{
建造师(道具){
超级(道具);
此.state={
第一类:[],
第二类:[],
第三类:[],
};
}
异步组件didmount(){
}
异步shouldComponentUpdate(prevProps){
if(prevProps.navigation.state.params.Update){
const{updated}=prevProps.navigation.state.params;
//更新=对象
const{typeTwo,typetwree}=this.state;
//类型三=[]
这是我的国家({
typeTwo:typeTwo.filter((v)=>v.id!==updated.id),
类型三:[……类型三,更新],
});
}
}
render(){
返回(
);
}
}
Detail.js

导出默认类详细信息扩展React.Component{
建造师(道具){
超级(道具);
此.state={
优惠券:this.props.navigation.state.params.优惠券,
};
}
backToIndex(){
const updated=this.state.consup;
this.props.navigation.navigate('Index',{updated});
}
}
我想做的事

从详细信息导航到索引时,我想再次
setState

因此,我在Index.js中使用了
shouldComponentUpdate

错误

[未处理的承诺拒绝:错误:超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。]

看起来Index.js在从详细信息导航到索引时反复调用setState


如果您能告诉我如何解决这个问题,我将不胜感激。

不能
shouldComponentUpdate()中设置
setState()
。它应该只返回
TRUE
FALSE
请阅读APIdocs@codemax谢谢在这种情况下我应该使用componentDidUpdate()吗?@user14212874是的,在
componentDidUpdate()中使用
setState()
是安全的。小心不要捕捉到另一个堆栈错误。提到