javascript - React Native Deep Linking 未重定向到指定的屏幕
问题描述
我正在尝试按照以下文档在 React Native 中实现深度链接:https ://reactnavigation.org/docs/configuring-links 。
这里的主要问题是我无法打开特定屏幕,它总是打开主屏幕。
我目前只在 iOS 中进行测试,但在 Android 中也会发生同样的情况。
我定义了自定义 url 方案
<dict>
<key>CFBundleURLName</key>
<string>com.react_native_starter_kit</string>
<key>CFBundleURLSchemes</key>
<array>
<string>test</string>
</array>
</dict>
定义的链接对象
const linking = {
prefixes: ['test://'],
config: {
screens: {
App: {
screens: {
Settings: 'settings/:id',
},
},
},
},
};
和导航
export const Router = () => {
...
return (
<NavigationContainer linking={linking}>
<Main />
</NavigationContainer>
);
};
const Main = (props) => {
...
return (
<Stack.Navigator
screenOptions={{ headerShown: false }}
initialRouteName={routesName.App}>
{userToken ? (
<Stack.Screen name={routesName.App} component={TabNavigator} />
) : (
<Stack.Screen name={routesName.Auth} component={AuthStack} />
)}
</Stack.Navigator>
);
};
const TabNavigator = () => {
...
return (
<Tab.Navigator>
<Tab.Screen
name={routesName.Home}
component={HomeStack}
options={navigationOptions(routesName.Home, theme)}
/>
<Tab.Screen
name={routesName.Settings}
component={SettingsStack}
options={navigationOptions(routesName.Settings, theme)}
/>
</Tab.Navigator>
);
};
当我test://settings/123
在 safari 中键入时,或者xcrun simctl openurl booted test://settings/123
它应该打开设置选项卡,但它总是只打开主屏幕。我尝试了很多linkin
obj 组合,结果总是相同。即使我删除linking={linking}
行为是相同的,应用程序也会打开主屏幕。就像导航忽略了一样linking={linking}
。
解决方案
您的链接对象应该是这样的
const linking = {
prefixes: ['test://'],
config: {
screens: {
App: {
path: "app",
screens: {
Settings: 'settings/:id',
},
},
},
},
};
保存后运行此命令以测试深层链接
npx uri-scheme 打开 test://app/settings/778GHFHG --ios
推荐阅读
- kubernetes - vert.x 事件总线消息的 Istio 请求跟踪
- html - 倾斜 div 容器上的文本溢出
- listview - 将按钮绑定到列表视图数据模板中的命令
- javascript - 如何在 pos 中关闭屏幕时添加弹出动作
- php - 登录 PHP 后登录不重定向到管理索引页面
- matlab - MATLAB 中的谢尔宾斯基三角形
- spring-jdbc - JdbcTemplate 对多个表同时批量更新
- php - Laravel 中所有控制器的通用文件上传
- html - django使用html模板将数据插入数据库
- python - 像“The LJ Speech Dataset”这样的数据集