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

React Native中legacy_createStore报错:undefined is not a function求助

Redux "undefined is not a function" 报错解决方案

错误原因

你遇到的报错源于createStore变量未正确获取到函数:你从redux包中导入legacy_createStore并别名成createStore,但redux 4.2.0本身并没有导出legacy_createStore这个方法——该方法是@reduxjs/toolkit提供的兼容导出,直接从redux包导入会导致createStore为undefined,调用时触发错误。

另外你的reducer存在逻辑bug:ADD_LIST case中返回{ ...state, newList }会给state新增newList字段,而非更新原有的nameList,会导致后续无法正确获取更新后的列表数据。

修复步骤

方案1:使用官方推荐的@reduxjs/toolkit配置store(优先选择)

@reduxjs/toolkit是Redux官方推荐的工具集,简化了store配置流程,同时内置了最佳实践:
修改Provider.js:

import React from "react";
import { Provider } from "react-redux";
import { configureStore } from "@reduxjs/toolkit";
import reducers from "./reducers";
import initialState from './store'

const UserProvider = ({children}) => {
    const store = configureStore({
        reducer: reducers,
        preloadedState: initialState
    })

    return <Provider store={store}>{children}</Provider>
}

export default UserProvider

方案2:使用redux原生createStore(不推荐,已标记为legacy)

如果坚持使用原生redux,修正导入方式即可:
修改Provider.js:

import React from "react";
import { Provider } from "react-redux";
import { createStore } from "redux";
import reducers from "./reducers";
import initialState from './store'

const UserProvider = ({children}) => {
    const store = createStore(reducers, initialState)

    return <Provider store={store}>{children}</Provider>
}

export default UserProvider

修正reducer逻辑bug

修改reducers.js中的ADD_LIST case,确保更新正确的state字段:

export default function (state, action) {
    switch (action.type) {
        case "ADD_LIST":
            const {name} = action.payload
            const newList = [...state.nameList, name]
            return { ...state, nameList: newList }
        default:
            return state
    }
}

内容的提问来源于stack exchange,提问作者baristp04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:37:46