我的React Native应用程序希望在用户打开应用程序时将其本地数据与API同步.这应该在用户返回应用程序时发生,而不仅仅是在第一次启动时.基本上,我想要的是相当于AppDelegate的applicationDidBecomeActive回调,以便我可以在那里运行同步代码.显然,我想在React Native中这样做.
据我所知,root组件上的componentWillMount/ componentDidMount回调仅在最初加载应用程序时运行,而不是在用户离开应用程序并稍后返回(未明确退出应用程序)之后运行.
我认为AppStateAPI将提供此功能,但它的change侦听器也不会在这种情况下触发.
这似乎是明显的功能,所以我必须错过一些明显的东西.救命!
Mit*_*tch 24
我通过使用AppStateIOSAPI而不是使用API 修复此问题AppState.后者在iOS设备上按预期工作:当应用程序进入后台时,"change"事件将触发,并且当它返回到前台时再次触发.该AppStateAPI似乎不火"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/>
}
})
Run Code Online (Sandbox Code Playgroud)
当此组件安装到React Native应用程序中时,您将在关闭并打开应用程序时看到"AppStateIOS已更改为...".据我所知,你永远不会看到"AppState改为......".
更新
似乎最近在React Native中修复了这个问题(截至第26条).您现在可以AppState在iOS和Android上使用广告.
| 归档时间: |
|
| 查看次数: |
14324 次 |
| 最近记录: |