react-native - Trouble migrating React Navigation v4 Deep Link configuration to React Navigation v5
问题描述
I'm having some trouble migrating my deep-link from React Navigation v4 to React Navigation v5.
For context, my deep linking has been working perfectly in React Navigation v5 with a tab bar navigator and stack navigators in each tab.
Here's what that looked like:
const MainApp = createBottomTabNavigator(
{
DiscoverTabStack: { screen: DiscoverTabStack, path: "" },
GroupTabStack: { screen: GroupTabStack, path: "" },
ProfileTabStack: { screen: ProfileTabStack, path: "" },
},
);
const DiscoverTabStack = createStackNavigator(
{
Discover: { screen: DiscoverScreen, path: "discover" },
DetailedActivityFromDeepLink: {
screen: DetailedActivityFromDeepLinkScreen,
path: "discover/activites/:id",
},
}
With React Navigation v4, I'm able to successfully deep link into the app to the correct place. However, I'm having some trouble with React Navigation v5. Below is how I'm approaching it with Reach Navigation v5.
const Tab = createBottomTabNavigator();
const DiscoverStack = createStackNavigator();
const prefixes = Linking.makeUrl("myapp://");
const linking = {
prefixes: [prefixes],
config: {
screens: {
DiscoverStack: {
path: "",
screens: {
Discover: {
path: "discover",
},
DetailedActivityFromDeepLink: {
path: "discover/activites/:id",
parse: {
id: (id) => `${id}`,
},
},
},
},
},
},
};
const DiscoverScreens = ({ navigation, route }) => {
return (
<DiscoverStack.Navigator mode="card">
<DiscoverStack.Screen
name="Discover"
component={DiscoverScreen}
/>
<DiscoverStack.Screen
name="DetailedActivityFromDeepLink"
component={DetailedActivityFromDeepLinkScreen}
/>
</DiscoverStack.Navigator>
);
};
render() {
return (
<Container>
<NavigationContainer linking={linking}>
<Tab.Navigator>
<Tab.Screen
name="Discover"
component={DiscoverScreens}
/>
</Tab.Navigator>
</NavigationContainer>
</Container>
);
}
Unfortunately, the above is not working. What may be wrong with my approach? How does one deep-link into an app that has tab bars with stack navigators in each tab?
I'm sure that this is a challenge for the majority of apps out there, so it'll be awesome for some help!! Thanks in advance!
解决方案
我的方法可能有什么问题?
在您的根导航器 ( Tab.Navigator
) 中,您调用了 screen Discover
,但在链接配置中,您已经编写了DiscoverStack
.
链接配置需要与您的屏幕具有相同的名称。
推荐阅读
- xcode - 重命名用户文件夹后 Xcode 存档错误
- c# - Visual Studio C# 打印 TabControl 中的所有选项卡
- html - 如何在不更改元素的情况下调整页面大小
- python - 部分截图未存储在 html 报告中
- r - 有效地重命名列值
- angular - Angular 5 移除 html 上的(点击)事件
- python - Tkinter 按钮无法正确显示
- javascript - 如何将下拉菜单从垂直线对齐到水平线?
- node.js - MongoDB我如何在一个非唯一名称键的对象内的位置数组中使用$center
- vue.js - 如何将 Vuelidate 与可编辑的 Vuetify 数据表字段一起使用