在React Native Android中从后续屏幕返回按钮时是否重新安装了组件?

时间:2015-12-15 19:15:50

标签: android react-native

每当用户进入屏幕时,我都需要将屏幕更新到服务器,因此将AJAX调用放在componentDidMount()方法中。当navigator.push()到屏幕时,但是当它从后续屏幕(navigator.pop())后退时,会调用AJAX。我的理解是,当导航器推送到下一个屏幕并在返回时重新安装时,组件将被卸载。我的理解在这里错了吗?似乎componentDidMount()在以后的屏幕中没有在navigator.pop()之后调用。

非常感谢!

2 个答案:

答案 0 :(得分:2)

在堆栈中向前移动(添加路由)时,不会卸载组件。对于您要做的事情,您需要让一个组件监听didfocus或willfocus,并检查即将在回调中显示的路线。

文档: https://facebook.github.io/react-native/docs/navigator.html#content

用法示例: https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/Navigator/NavigationBarSample.js

答案 1 :(得分:0)

攻击它的一种方法是对BackAndroid回调进行条件检查。例如,通过路由堆栈循环,如果其中有后续页面,请不要调用navigator.pop方法。这样,后退按钮侦听器仅适用于添加它们的页面及其附属抽屉页面。