gpt4 book ai didi

reactjs - 嵌套 react 导航深度链接与 expo react native

转载 作者:行者123 更新时间:2023-12-05 06:26:46 30 4
gpt4 key购买 nike

我们正在尝试使用 Expo Linking 将深层链接添加到我们的 Expo React native 应用程序使用如下内容在应用程序中打开特定路径:myapp://home/items/order-details。但是,当尝试使用该深层链接 url 时,我们只会被带到主屏幕。

但是,当我们使用这个 url:myapp://profile 时,它确实会打开配置文件屏幕而不是主屏幕。它似乎适用于顶级路线,但不适用于嵌套路线。有没有办法让深层链接 url 使用我们的导航直接转到订单详细信息屏幕?

我们的 App.js 看起来像这样:

import {createRootNavigator} from './router';

const RootNav = createRootNavigator();
const prefix = Expo.Linking.makeUrl('/');

export default class App extends React.Component {
render() {
return (
<Root>
<RootNav uriPrefix={prefix}/>
</Root>
)
}

这是我们的 router.js

export const MenuNav = createStackNavigator ({
Menu: {screen: Menu, path: 'menu'},
OrderDetails: {screen: OrderDetails, path: 'order-details'}
}
);

export const UserCreate = createStackNavigator ({
Profile: {screen: Profile}
});

export const Tabs = createBottomTabNavigator({
'Home': {
screen: Home,
path: 'home-tab'
},
'Items': {
screen: MenuNav,
path: 'items'
}
},
{tabBarComponent: (props) => {
return (
<TabBar
{...props}
/>
);
},
tabBarPosition: 'bottom',
},
);


export const createRootNavigator = () => {
return createDrawerNavigator ({
Home: {
screen: Tabs,
path: 'home'
},
Profiles: {
screen: UserCreate,
path: 'profile'
},
});

最佳答案

因为导航器是如此嵌套,而不是在 App.js 的 RootNav 中添加 uriPrefix,尝试将其添加到 tabBarComponent。因此,在您的 router.js 中,您应该将 uriPrefix = {prefix} 添加到 TabBar。此外,由于 order-details 嵌套在另一个堆栈中,因此可能需要为 OrderDetails 屏幕添加另一个堆栈,因为它已经是它自己的屏幕。router.js 应该是这样的:

const prefix = Expo.Linking.makeUrl('/');
export const MenuNav = createStackNavigator ({
Menu: {screen: Menu, path: 'menu'},
OrderDetails: {screen: OrderDetails, path: 'order-details'}
}
);

export const UserCreate = createStackNavigator ({
Profile: {screen: Profile}
});

export const Tabs = createBottomTabNavigator({
'Home': {
screen: Home,
path: 'home-tab'
},
'Items': {
screen: MenuNav,
path: 'items'
}
},
{tabBarComponent: (props) => {
return (
<TabBar
{...props}
uriPrefix={prefix}
/>
);
},
tabBarPosition: 'bottom',
},
);


export const createRootNavigator = () => {
return createDrawerNavigator ({
Home: {
screen: Tabs,
path: 'home'
},
Profiles: {
screen: UserCreate,
path: 'profile'
},
OrderDetails: {
screen: OrderDetails,
path: 'history/order/:orderId'
}
});

关于reactjs - 嵌套 react 导航深度链接与 expo react native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55737547/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com