You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Redux Toolkit在React Native实现CRUD时遇Provider包裹错误求助

报错原因及解决方法

核心问题

你当前代码的问题在于:AppRegistry.registerComponent注册的根组件是App,而非包裹了<Provider>的DataStore组件。这导致App及其所有子组件都没有处于Redux的上下文环境中,当组件尝试访问Redux状态或操作时,自然会抛出找不到context value的错误。

修正后的代码

import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';
import { configureStore } from "@reduxjs/toolkit";
import { Provider } from "react-redux";
import userReducer from './src/userData/UserData'

const DataStore = () => {
    const store = configureStore({
        reducer: {
            user: userReducer
        }
    })
    return (
        <Provider store={store}>
            <App />
        </Provider>
    );
};

// 注册包裹了Provider的DataStore作为根组件
AppRegistry.registerComponent(appName, () => DataStore)

export default DataStore

优化建议(可选)

为避免组件重复渲染时多次创建store,可把store定义在组件外部:

import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';
import { configureStore } from "@reduxjs/toolkit";
import { Provider } from "react-redux";
import userReducer from './src/userData/UserData'

// 外部定义store,仅初始化一次
const store = configureStore({
    reducer: {
        user: userReducer
    }
})

const DataStore = () => {
    return (
        <Provider store={store}>
            <App />
        </Provider>
    );
};

AppRegistry.registerComponent(appName, () => DataStore)

export default DataStore

内容的提问来源于stack exchange,提问作者Praveen Kumar S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:31:49