React Navigation切换屏幕焦点状态报错,请求修复方案
修复CommonActions.reset触发的"can not read property length of undefined"错误
错误原因
你传入CommonActions.reset的参数格式不符合要求:state: false是无效配置,reset方法的state属性需要接收一个包含路由信息的对象结构(内部会读取该结构的routes数组的length属性,你传false导致找不到这个数组,所以抛出错误)。
正确实现方式
如果你只是想切换到屏幕A并让它成为聚焦状态,同时重置导航栈,应该按以下格式配置CommonActions.reset:
import { CommonActions } from '@react-navigation/native'; useEffect(() => { navigation.dispatch( CommonActions.reset({ routes: [{ name: 'ScreenA' }], // 指定要跳转的目标屏幕名称 index: 0, // 聚焦的路由索引,对应routes数组的下标 }) ); }, [navigation]);
补充说明
- 如果需要保留之前的路由结构仅切换聚焦状态,应该使用
CommonActions.jumpTo而不是reset:useEffect(() => { navigation.dispatch(CommonActions.jumpTo('ScreenA')); }, [navigation]); - 确保
'ScreenA'是你导航容器中注册的正确屏幕名称,名称不匹配也会导致异常。
内容的提问来源于stack exchange,提问作者salmanaacvf
相关产品推荐
相关产品推荐

