android - 反应原生深度链接不移动到第二个深度链接
问题描述
使用 react native 深度链接时,我正在努力使用带有第二条路径的 uri。文档中有示例https://reactnavigation.org/docs/4.x/deep-linking
我遇到的问题是 blahh://account --android 将链接到正确的屏幕,但是 blahh://account/keys --android 不会。如果我将任何路径添加到 AccountStack 中的屏幕,这也是一样的
我正在使用反应导航版本 4。
const AccountStack = createStackNavigator(
{
Account: {
screen: Account,
path: '',
navigationOptions: {
...accountNavigationOptions,
...Account.navigationOptions,
},
},
AccountLoginAndSecurity: {
screen: AccountLoginAndSecurity,
path: '',
navigationOptions: () => ({
...defaultNavigationOptions,
headerTransitionPreset: 'uikit',
}),
},
CreateAccount: {
screen: CreateAccount,
path: '',
navigationOptions: () => ({
...defaultNavigationOptions,
headerTransitionPreset: 'uikit',
}),
},
KeysList: {
screen: KeysList,
path: 'keys',
navigationOptions: () => ({
...defaultNavigationOptions,
headerTransitionPreset: 'uikit',
}),
},
AccountSwitch: createAnimatedSwitchNavigator(
{
AccountLoading: {
screen: AccountLoading,
path: '',
params: {
theme: 'orange',
navigateScreen: 'CreateAccountOrLogin',
},
},
CreateAccountOrLogin: CreateAccountOrLogin,
Continue: AccountMenu,
},
{
initialRouteName: 'AccountLoading',
transition: createSwitchTransition(),
}
),
},
{
defaultNavigationOptions: accountNavigationOptions,
}
);
export const TabNavigator = createBottomTabNavigator(
{
Explore: {
screen: ExploreStack,
path: '',
},
Bookings: {
screen: YourBookingsStack,
path: '',
},
Account: {
screen: AccountStack,
path: 'account',
},
},
{
defaultNavigationOptions: ({ navigation }) => ({
// eslint-disable-next-line react/display-name
tabBarIcon: ({ focused }): React.ReactNode => {
const { routeName } = navigation.state;
let iconName;
if (routeName === 'Explore') {
focused
? (iconName = require('assets/icons/bottom_tab_icons/explore_tab_icon.png'))
: (iconName = require('assets/icons/bottom_tab_icons/explore_tab_icon_unselected.png'));
} else if (routeName === 'Bookings') {
focused
? (iconName = require('assets/icons/bottom_tab_icons/bookings_tab_icon.png'))
: (iconName = require('assets/icons/bottom_tab_icons/bookings_tab_icon_unselected.png'));
} else if (routeName === 'Account') {
focused
? (iconName = require('assets/icons/bottom_tab_icons/account_tab_icon.png'))
: (iconName = require('assets/icons/bottom_tab_icons/account_tab_icon_unselected.png'));
}
return <Image source={iconName} />;
},
tabBarOptions: {
showLabel: false,
style: {
elevation: 3,
borderTopColor: 'transparent',
backgroundColor: '#fff',
height: 50,
},
},
}),
navigationOptions: () => ({
headerBackTitle: null,
headerTitleStyle: { color: 'orange' },
}),
}
);
解决方案
在进入密钥屏幕之前,我只是查看了代码库和帐户链接到帐户屏幕。
Account: {
screen: Account,
path: '',
navigationOptions: {
...accountNavigationOptions,
...Account.navigationOptions,
},
},
所以解决方法是在 accountstack 中添加一个空路径,然后在去 npx uri-scheme open blahh://account/keys --android 时它工作正常
推荐阅读
- python - 使用 python 将 JSON 值插入 MySQL 表
- php - 如何使用 Twig 以特定语言显示日期
- python - 类似于 R 的 Python 模拟方法
- android - 使用 Glide 下载位图时会失去透明度
- java - 自定义对象从 FX 拖放到 Swing
- python - 如何查看代码的哪一部分在终端中运行
- c# - System.Diagnostics.Activity 在 aspnet 核心 2.1 中为空
- javascript - 将多个工作表名称传递给数组 Google App 脚本不适用于时间戳功能
- android - 如何解决此错误:spawn EACCES - ionic cordova build ios
- twitter-bootstrap - 如何使链接仅显示在移动设备上而不显示在桌面上?