当用户打开应用程序时,我的React Native应用程序希望将其本地数据与API同步。每当用户返回到应用程序时(不仅是首次启动时),都应该发生这种情况。本质上,我想要的是等效于AppDelegate的applicationDidBecomeActive
回调,以便可以在其中运行同步代码。显然,我想改为在React Native中执行此操作。
据我所知,根组件上的componentWillMount
/componentDidMount
回调仅在最初加载应用程序时运行,而不是在用户离开应用程序并稍后返回(没有明确退出应用程序)之后运行。
我以为AppState
API会提供此功能,但是change
在这种情况下,它的监听器也不会触发。
这似乎是显而易见的功能,因此我必须缺少明显的东西。帮助!
我使用AppStateIOS
API而不是修复了此问题AppState
。后者可在iOS设备上按预期工作:当应用程序进入后台时,"change"
事件将触发,再次返回到前台时,事件将触发。该AppState
API似乎不火"change"
的iOS设备上的所有事件,如发生反应原住民v0.18,据我可以告诉。该项目的约定建议AppState
应该是的跨平台包装器AppStateIOS
,但在这里似乎并非如此。
下面的示例应演示该问题:
React.createClass({
componentDidMount() {
AppStateIOS.addEventListener('change', state =>
console.log('AppStateIOS changed to', state)
)
AppState.addEventListener('change', state =>
console.log('AppState changed to', state)
)
},
render() {
return <View/>
}
})
当将此组件安装到React Native应用程序中时,关闭和打开应用程序时,您会看到“ AppStateIOS更改为...”。据我所知,您永远不会看到“ AppState更改为...”。
更新
看来这是最近在React Native中修复的(自v26起)。您现在可以使用AppState
在iOS和Android上宣传的广告。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句