以前,当我想在打开屏幕时做一些动作时,我把它们放在里面 componentDidMount
。例如,我可以获取一些数据。
像这样。
componentDidMount() {
this.updateData();
}
但是 react-navigation
componentDidMount
仅在用户第一次打开屏幕时发生一次,如果以后用户再次打开此页面,则不会触发 componentDidMount。
检测页面(屏幕)何时激活并执行操作的正确方法是什么?
原文由 rendom 发布,翻译遵循 CC BY-SA 4.0 许可协议
反应导航 v6
当屏幕成为焦点时使用 API 调用获取数据
一个布尔值,指示屏幕是否聚焦
参考 v6.x: https ://reactnavigation.org/docs/function-after-focusing-screen/
年长者:
使用
react-navigation
,您可以分两步完成:在
componentDidMount
或componentWillMount
中添加监听器,以挂钩事件移除
componentWillUnmount
中的监听器,避免意外调用API 参考文档 v3.x、v4.x、v5.x
反应导航 v3.x、v4.x :
React-navigation 3.x、4.x 示例:
参考 v4.x https://reactnavigation.org/docs/4.x/navigation-prop/#addlistener—subscribe-to-updates-to-navigation-lifecycle
更新的 v5.x
v5.x 中的事件已更改
来自 reactnavigation.org 的示例代码
与钩子一起使用
屏幕上的听众道具
参考 v5.x: https ://reactnavigation.org/docs/navigation-events