Javascript 反应本机-导航参数重置
我有这个问题,我想在一个组件中运行一些函数,只有当来自X路由时。现在我正在使用Redux,但我不想在这个案例中使用Redux 我有A部分:Javascript 反应本机-导航参数重置,javascript,reactjs,Javascript,Reactjs,我有这个问题,我想在一个组件中运行一些函数,只有当来自X路由时。现在我正在使用Redux,但我不想在这个案例中使用Redux 我有A部分: const A = ({ shouldReset, setShouldReset }) => { useEffect((){ if(shouldReset){ reset(); setShouldReset(false); } }); const reset = () => { //
const A = ({ shouldReset, setShouldReset }) => {
useEffect((){
if(shouldReset){
reset();
setShouldReset(false);
}
});
const reset = () => {
// some state changes here
};
}
从代码的另一部分,我有:
setShouldReset(true);
NavigationService.navigate('RouteY');
我想做一些事情,比如:
NavigationService.navigate('RouteY', { shouldReset: true });
但问题是,一旦它通过useffect,我就无法将这个参数设置回false,因此它进入了一个无限循环
为什么不使用Redux就这样做?在使用效果中重置参数,它应该停止循环
clearParams = () => {
navigation.setParams({shouldReset: null})
}
useEffect((){
if(shouldReset){
reset();
setShouldReset(false);
cleanParams();
}
});
useEffect需要依赖项,如果在useEffect中未提供依赖项,它将始终在每个渲染上运行 大概是这样的:
const A = ({ shouldReset, setShouldReset }) => {
useEffect((){
if(shouldReset){
reset();
setShouldReset(false);
}
}, [shouldReset]);
const reset = () => {
// some state changes here
};
}
否则它将无限期更新。是的,但我希望它重置,因为如果我再次进入该屏幕,由于参数仍然存在,它将比较true===true,因此它将不会再次运行。在这种情况下,您应该考虑将该值保持在状态。我不知道setParams,我现在就试试