React Navigation 7中useLinkTo的linkTo功能失效问题咨询
问题原因与解决方案
React Navigation 7.x对嵌套导航器的路由解析逻辑做了调整,linkTo确实受此规则影响——无法直接通过深层字符串路径跳转到嵌套在多层导航器下的屏幕,必须明确导航层级或调整链接配置。
方案1:调整链接配置,让路径正确映射
你的当前配置中,TabsNav没有设置对应的基础路径,导致/stats无法被正确解析到嵌套的Screen2。修改配置,给TabsNav添加基础路径,并将子屏幕路径改为相对路径:
const config = { screens: { // Root navigator: Menu Nav StackNav: { screens: { TabContainer: '/places', TabsNav: '/tabs', // 给嵌套的Tab导航器添加基础路径 screens: { Screen1: 'summary', // 去掉前缀/,使用相对路径 Screen2: 'stats', }, }, Screen3: '/account' }, Screen4: '/chat' } }
之后可以用linkTo('/tabs/stats')完成跳转。如果需要保留/stats的直接跳转,可以添加重定向规则:
const config = { screens: { // 原有配置... StatsRedirect: { path: '/stats', screen: 'StackNav', params: { screen: 'TabsNav', params: { screen: 'Screen2' } } } } }
方案2:使用路由对象调用linkTo
直接传入包含层级信息的路由对象,绕过路径解析的问题,和navigation.navigate的写法一致:
const linkTo = useLinkTo(); // 跳转至Screen2 linkTo({ name: 'StackNav', params: { screen: 'TabsNav', params: { screen: 'Screen2' } } });
这种方式不需要修改链接配置,直接明确指定每一层导航器的名称,符合React Navigation 7.x的嵌套导航规则。
注意:如果坚持使用字符串路径,必须确保配置中的每一层嵌套导航器都有对应的路径映射,且子屏幕路径为相对路径,否则会出现解析失败或无响应的问题。
内容的提问来源于stack exchange,提问作者André
相关产品推荐
相关产品推荐

