演示组件在屏幕之间移动时被缓存

时间:2019-06-13 13:18:34

标签: reactjs react-native redux react-redux react-navigation

我正在构建一个本机应用程序,其中所有屏幕共享相同的通用功能,例如     1.提出ajax请求     2.将snake_case密钥转换为camelCase     3.在获取数据时显示加载指示器     4.订阅redux商店并将商店公开为道具

这是我正在使用的工具

  1. 本机
  2. 博览会
  3. redux
  4. react-redux
  5. 反应导航

我的容器不知道要提取什么URL,因为它与所有组件一起使用。我以这种方式调用容器组件

const fetchUrls = store => return [url, url];
return MycontainerComponent(WrapperComponent)(fetchUrls);

这似乎在初始加载时可以正常工作,但是在访问屏幕,导航到另一个屏幕并再次回到第一个屏幕时却无法正常工作。好像组件已被缓存并且不再重新计算一样。只要存储中的数据没有更改,这对我来说就是如此。因此我在容器组件内部编写了一个观察程序,以查看存储中的任何值是否发生更改,该组件将重新呈现。但这可以正常工作,直到我遇到另一个问题。

我想像gmail一样支持用户切换,因为我的是父母应用,父母可以有2个或更多的孩子在同一所学校学习,而您可以理解其余的情况。

现在,当我切换用户时,我更新了redux存储,并认为它将重新呈现内容,一切都很好。直到我触及现实。

当我切换用户时,似乎该组件试图同时卸载并获取新商店值的url,并以典型的“不要在该组件中设置状态”的方式来回应投诉,即它会取消安装,无操作,取消订阅等等。

我不知道发生了什么,任何人都可以对此有所了解。谢谢。

1 个答案:

答案 0 :(得分:1)

使用堆栈导航器时,屏幕失去焦点后不会被卸载。这是性能优化。如果要在屏幕重新获得焦点时执行逻辑,请将逻辑放在NavigationEvents onWillFocus或onDidFocus。

相关问题