Arm*_*vić 1 javascript navigation android-lifecycle react-native react-native-android
我正在为我的移动应用程序使用 react-navigation,我有 2 条路线 - Home 和 Favoriti,其中 Home 是初始路线。这两个组件都有 componentDidMount。每当我从 Home 导航到 Favoriti 时,Favoriti 组件都会挂载,但是当我导航回 Home 时,它的 componentDidMount 不会执行。它仅在我第一次打开应用程序时执行,但我每次导航到它时都需要挂载它。
import { createStackNavigator, createAppContainer} from 'react-navigation';
import Home from './views/Home';
import Favoriti from './views/Favoriti';
const MainNavigator = createStackNavigator({
FavoritiRT: Favoriti,
HomeRT: Home
},
{
initialRouteName: "HomeRT"
}
);
const MyRoutes = createAppContainer(MainNavigator);
export default MyRoutes;
Run Code Online (Sandbox Code Playgroud)
没有错误显示,只是初始路由的 componentDidMount 不会在我每次导航到它时执行,但在其他路由中它会执行。
“componentDidMount”不会再次运行,因为“Home”组件已经创建并且只要它在堆栈中就会继续存在。Home 组件的那个实例将被重用,当用户返回到那个 Home 组件时,他们将继续他们离开的地方。要再次运行 componentDidMount,您需要启动 Home 组件的新实例。
而不是使用后退按钮。创建一个按钮并在 onPress 属性中使用 push 方法导航到 Home 的新实例。
<Button
title="Home"
onPress={() => this.props.navigation.push('Home')}
/>
Run Code Online (Sandbox Code Playgroud)
https://reactnavigation.org/docs/en/navigating.html#going-back
编辑:
虽然这将使您的应用程序暂时运行;sfratini 提出了一个很好的观点,如果您最终为公司/客户工作或发布自己的应用程序,他的回答对您会更好。出于他所说的所有原因,添加侦听器将是理想的选择。
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |