reactjs - React Native:使用反应导航时屏幕不会重新渲染或触发 useEffect()
问题描述
当导航来自特定页面时,我需要刷新屏幕。但是当页面导航时,useEffect 方法或任何其他方法都不会被触发。我知道,由于状态或道具没有改变,因此不会触发该方法。但是有没有办法触发它,请告诉我。我也尝试了 didFocus,但每次屏幕聚焦时都会刷新,但我希望仅在来自特定屏幕时才进行刷新。
解决方案
我还没有使用 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 });
希望能帮助到你。
推荐阅读
- python - 如何缩放图像以使其具有各向同性?
- python - 使用python从Sharepoint文件夹中检索.xlsx文件列表
- sql - 根据那里的顺序标记行(连续值)
- python - Pandas DataFrame:用数字计算单元格的数量
- macos - 获取 WebStorm 上的所有代码完成选项
- python - 标签编码器 - 使用 Inverse_transform 函数
- r - 订购 ggplot 轴和颜色
- react-native - 有没有办法在反应原生路由器通量中隐藏父标签栏?
- terraform - 使用 SQL FO 组的专用链接并使用 Terraform 配置基础架构
- javascript - 创建 MERN 堆栈应用程序时出现代理错误和 webpack 错误