【问题标题】:React Native: Screen not re rendering or triggering useEffect() while using react navigationReact Native:使用反应导航时屏幕不会重新渲染或触发 useEffect()
【发布时间】:2019-11-12 01:34:58
【问题描述】:

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

【问题讨论】:

  • 如何使用useEffect?你对你的 useEffect 有任何依赖吗?请分享您要触发useEffect的页面的代码

标签: reactjs react-native react-native-android


【解决方案1】:

我还没有使用 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 });

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2020-07-20
    相关资源
    最近更新 更多