Javascript 反应本机-导航参数重置

Javascript 反应本机-导航参数重置,javascript,reactjs,Javascript,Reactjs,我有这个问题,我想在一个组件中运行一些函数,只有当来自X路由时。现在我正在使用Redux,但我不想在这个案例中使用Redux 我有A部分: const A = ({ shouldReset, setShouldReset }) => { useEffect((){ if(shouldReset){ reset(); setShouldReset(false); } }); const reset = () => { //

我有这个问题,我想在一个组件中运行一些函数,只有当来自X路由时。现在我正在使用Redux,但我不想在这个案例中使用Redux

我有A部分:

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,我现在就试试