Kas*_*ash 3 react-native react-navigation
我最近刚刚添加了抽屉导航器并将我的屏幕包裹在 createDrawerNavigator()
这些是我目前的路线:
当用户从Home导航到Post 时,我传递一个包含 post 数据的参数。
onPress={() => this.props.navigation.navigate('Post', {postData: postData})}
Run Code Online (Sandbox Code Playgroud)
当用户从Post返回Home时,post 将被卸载。并在单击另一篇文章时重新安装新数据。
我的问题是,通过实施抽屉,导航回主页时不会卸载帖子屏幕,我一遍又一遍地不断打开第一个帖子的相同道具和屏幕。
这是我的路线设置:
onPress={() => this.props.navigation.navigate('Post', {postData: postData})}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我希望每个帖子屏幕在从主页导航到它时打开并重新呈现为新的。
小智 11
对于那些使用 react-navigation v5. 我遇到了同样的问题,我的组件没有通过goBack()用于抽屉中的屏幕链接来卸载。经过一些研究,我发现我们在最新版本的 react-navigation 中,他们unmountonblur在 drawer navigator 的屏幕选项中添加了一个属性,默认情况下它是 false,这就是组件不会卸载的原因。我正在使用它来解决我的问题。
这是我的代码
<Drawer.Screen name="ResetLogsStack" component={ResetLogsStack} options={{unmountOnBlur:true}}/>
Run Code Online (Sandbox Code Playgroud)
这是链接:unmountonblur
我曾经面临同样的问题。我让我的屏幕Post监听由react-nativation 此处触发的导航焦点事件而不是componentDidMount.
import React from 'react';
import { View } from 'react-native';
import { NavigationEvents } from 'react-navigation';
const Post = () => (
<View>
<NavigationEvents
onWillFocus={payload => console.log('will focus',payload)}
onDidFocus={payload => console.log('did focus',payload)} //
onWillBlur={payload => console.log('will blur',payload)}
onDidBlur={payload => console.log('did blur',payload)}
/>
{/*
Your view code
*/}
</View>
);
Run Code Online (Sandbox Code Playgroud)
使用onDidFocus,您可以获取导航参数、获取数据和/或更新状态。如果需要,您可以清除屏幕状态onDidBlur。
或者,您可以按照此处的文档进行命令式编码
顺便问一下,我想知道你为什么要放Post抽屉?难道只是在抽屉里有一个可以访问Post页面的链接吗?
在我看来,您应该将Home和移动Post到新堆栈并作为Home初始路线。这将确保导航回 后卸载该帖子Home。
看看下面我的样本
const HomeStack = createStackNavigatior({
Home: {screen: Home},
Post: {screen: Post},
}, {
initialRouteName: 'Home',
...
})
const Drawer = createDrawerNavigator(
{
HomeStack
Settings: {screen: Settings}
},
{
initialRouteName: "HomeStack",
backBehavior: 'initialRoute',
contentOptions: {
activeTintColor: "#e91e63"
},
contentComponent: props => <SideBar {...props} />,
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9221 次 |
| 最近记录: |