首页 > 解决方案 > React Native:使用反应导航时屏幕不会重新渲染或触发 useEffect()

问题描述

当导航来自特定页面时,我需要刷新屏幕。但是当页面导航时,useEffect 方法或任何其他方法都不会被触发。我知道,由于状态或道具没有改变,因此不会触发该方法。但是有没有办法触发它,请告诉我。我也尝试了 didFocus,但每次屏幕聚焦时都会刷新,但我希望仅在来自特定屏幕时才进行刷新。

标签: reactjsreact-nativereact-native-android

解决方案


我还没有使用 useEffect ,但我使用 react-navigation 来激活道具的变化。

在你想要刷新的屏幕上,添加 didFocus 监听器:

this.props.navigation.addListener(
            'didFocus',
            payload => {
                console.debug('didFocus', payload);
                if (this.props.navigation.getParam('shouldRefresh')) {
                    this.props.navigation.setParams({ shouldRefresh: false });
                    // Do something
                }
            }
        );

当您导航到该屏幕并希望它刷新时:

this.props.navigation.navigate('SomeScreen', { shouldRefresh: true });

希望能帮助到你。


推荐阅读