redux 如何防止useEffect触发前一个屏幕

cwdobuhd  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(128)

我有两个屏幕,在我的第一个屏幕上,我有一个useEffect,它有一个Redux状态的观察者。
屏幕1

...
useEffect(() => {
  if (props.data) {
    navigation.navigate('To Other Screen');
  }
}, [props.data]);
...

字符串
然后在我的第二个屏幕上。我有一个函数,将更新redux 'data'。然后,在前一个上的useEffect被触发。
我该怎么阻止这件事。谢谢。

ut6juiuv

ut6juiuv1#

我在react-nativation上发现了这个问题,并将其与useEffect合并结合起来;
https://reactnavigation.org/docs/1.x/with-navigation-focus/

import { withNavigationFocus } from 'react-navigation';

...

const Page = (props) => {

    useEffect(() => {
        if (props.isFocused) {
            // function call;
        }

    }, [props.isFocused]);

};

export default withNavigationFocus(Page);

字符串

zkure5ic

zkure5ic2#

试试这个

React.useEffect(() => {
  const unsubscribe = navigation.addListener('focus', () => {
    if(props.data){
      navigation.navigate('To Other Screen')
    }
  })

  return unsubscribe
}, [navigation, props.data])

字符串

相关问题