每当用户进入屏幕时,我都需要将屏幕更新到服务器,因此将AJAX调用放在componentDidMount()方法中。当navigator.push()到屏幕时,但是当它从后续屏幕(navigator.pop())后退时,会调用AJAX。我的理解是,当导航器推送到下一个屏幕并在返回时重新安装时,组件将被卸载。我的理解在这里错了吗?似乎componentDidMount()在以后的屏幕中没有在navigator.pop()之后调用。
非常感谢!
答案 0 :(得分:2)
在堆栈中向前移动(添加路由)时,不会卸载组件。对于您要做的事情,您需要让一个组件监听didfocus或willfocus,并检查即将在回调中显示的路线。
文档: https://facebook.github.io/react-native/docs/navigator.html#content
答案 1 :(得分:0)
攻击它的一种方法是对BackAndroid回调进行条件检查。例如,通过路由堆栈循环,如果其中有后续页面,请不要调用navigator.pop方法。这样,后退按钮侦听器仅适用于添加它们的页面及其附属抽屉页面。