You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React Native集成@react-navigation/native-stack时出现ViewManagerResolver返回null错误

React Native集成@react-navigation/native-stack时出现ViewManagerResolver返回null错误

看起来你踩了版本兼容性的坑!我帮你梳理下问题和解决方向:

问题核心分析

你用@react-native-community/cli新建了RN项目,跟着教程集成@react-navigation/native-stack后,只要用<NavigationContainer>包裹导航栈就报错,直接渲染组件却正常,重新建项目也没用。从你贴的package.json能看出来:你用的是React Native 0.76.5,搭配的却是React Navigation 7.x版本——而React Navigation 7.x是专门适配RN 0.77及以上版本的,版本不匹配就是导致这个错误的关键原因!

具体解决方案

方案一:降级React Navigation到适配RN 0.76的版本

这是最快捷的调整方式,把导航库降到6.x版本(适配RN 0.70-0.76):

  1. 先卸载当前的导航库:
npm uninstall @react-navigation/native @react-navigation/native-stack
  1. 安装适配的6.x版本:
npm install @react-navigation/native@6.x @react-navigation/native-stack@6.x
  1. 确保安装了导航依赖的基础库(如果之前没装的话):
npm install react-native-screens react-native-safe-area-context

方案二:升级React Native到0.77+版本

如果你想使用最新的React Navigation 7.x,那就把RN升级到0.77及以上版本,具体升级步骤可以参考RN官方的升级指南,这里给你快速命令(注意备份项目):

npx react-native upgrade

最后别忘了清理缓存重建项目

不管选哪个方案,都要清理旧缓存避免干扰:

  • 清理Metro缓存:
npx react-native start --reset-cache
  • 清理Android构建缓存(针对安卓模拟器):
cd android && ./gradlew clean && cd ..
  • 重新运行项目:
npx react-native run-android

代码验证

你的导航代码逻辑本身是没问题的,只要版本匹配后,这段代码就能正常运行:

import {NavigationContainer} from "@react-navigation/native"
import {createNativeStackNavigator} from "@react-navigation/native-stack";
import WelcomeReactNative from "./screens/WelcomeReactNative.tsx";

const Stack = createNativeStackNavigator()

function App(): React.JSX.Element {
    return (
        <NavigationContainer>
            <Stack.Navigator initialRouteName='WelcomeReactNative'>
                <Stack.Screen name='WelcomeReactNative' component={WelcomeReactNative}/>
            </Stack.Navigator>
        </NavigationContainer>
    );
}

export default App;

备注:内容来源于stack exchange,提问作者AntiRakPro

火山引擎 最新活动