此篇教程会持续更新。。。
官方文档:https://reactnavigation.org/docs/navigation-lifecycle
react-native版本:0.57.0
react-navigation版本:2.x
模拟器:iPhone X ios 12.1
真机:华为 mate9 Pro
IOS:Xcode 10.1
Android:Android studio 3.2
开发系统:macOS Mojave 10.14
场景假设
写两个页面(HomeScreen,DetailScreen),我们从HomeScreen页面跳转到DetailScreen;当处于HomeScreen页面时,这个页面的装载函数会被调用(constructor、componentWillMount等等),我在这个页面里面有一个按钮,通过这个按钮跳转到DetailScreen页面,这个时候,DetailScreen页面的装载函数也会被调用,跟HomeScreen页面的相关函数都没有被调用,然后我通过返回键返回到上一个页面(HomeScreen)时,DetailScreen页面会被销毁,也就是DetailScreen页面的componentWillUnMount函数被调用,当返回到HomeScreen页面时,HomeScreen这个页面的所有的装载函数都不会调用,也就是说此时展示的页面是上一次渲染的结果,并没有重新渲染。如果想在返回的时候渲染HomeScreen页面,那么使用Navigation prop reference之addListener。
总结
HomeScreen(运行时)页面的装载函数被调用,切换到DetailScreen页面以后;
DetailScreen(运行时)页面的装载函数被调用,与HomeScreen页面相关的函数并没有被调用,返回到HomeScreen页面以后;
HomeScreen(运行时)页面并没有执行任何相关函数,HomeScreen页面保存的是上一次渲染的状态,DetailScreen已经被释放了。