reactjs TypeError:对象(...)不是react-redux中的函数

h6my8fg2  于 2023-03-17  发布在  React
关注(0)|答案(7)|浏览(146)

当我尝试在react-redux中创建商店时,我得到了这个奇怪的错误。我不知道为什么我以前在不同的应用程序中这样做时,它工作得很好。

TypeError: Object(...) is not a function
./src/index.js
C:/projects/facebook/facebook-react/src/index.js:14
  11 | import rootReducer from './rootReducer';
  12 | import registerServiceWorker from './registerServiceWorker';
  13 | 
> 14 | const store = createStore(
  15 |     rootReducer,
  16 |     composeWithDevtools(applyMiddleware(thunk))
  17 | );
View compiled
▶ 6 stack frames were collapsed.

这是我的档案
index.js

import { createStore, applyMiddleware} from 'redux';
import { composeWithDevtools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
import App from './App';
import rootReducer from './rootReducer';
import registerServiceWorker from './registerServiceWorker';

const store = createStore(
    rootReducer,
    composeWithDevtools(applyMiddleware(thunk))
);

ReactDOM.render(
<BrowserRouter>
    <Provider store={store}>
        <App />
    </Provider>
</BrowserRouter>
, document.getElementById('root'));
registerServiceWorker();

根还原剂

import { combineReducers } from 'redux'; import user from './reducers/user';

export default combineReducers({
    user });

减速器/用户

import { USER_LOGGED_IN } from '../types';

export default function user(state = {}, action={}) {
    switch (action.type) {
        case USER_LOGGED_IN:
            return action.user;
        default:
            return state;
    } }
vyu0f0g1

vyu0f0g11#

我也有同样的问题:我可以让它在一个测试应用程序上工作,但不能把它移到我的主项目中。我检查了所有的代码100次,并进行了广泛的研究,但没有找到任何东西可以让connect()在不抛出“TypeError:对象(...)不是函数”
最后,当我用旧react运行redux的新版本时,所需要的只是更新我主项目中的react和react-DOM。
只需在您的项目文件夹中运行以下命令。

npm update
628mspwn

628mspwn2#

如果您正在查看此消息,现在是大约2020年与上述相同的问题,然后确保在导入语句

import { composeWithDevtools } from "redux-devtools-extension";

应该是

import { composeWithDevTools } from "redux-devtools-extension";

名称区分大小写。您需要确保“DevTools”的大小写正确。

hk8txs48

hk8txs483#

出现此错误的原因是:

  1. react-redux在运行时不可用。请检查它是否已正确绑定或是否可作为全局文件使用(如果从CDN使用)
  2. react,redux的版本与react-redux不兼容。请将其中一些版本更新为最新版本
u59ebvdq

u59ebvdq4#

我正在使用react样板库,执行了“npm更新”,但由于某种原因,“aws-amplify”被破坏。因此,我取消了我的package.json和package-lock.json,并返回到以前的package.json和package-lock.json,运行了“npm安装”。突然,“对象(...)不是函数”错误得到解决。

cyvaqqii

cyvaqqii5#

在我的情况下,错误来自拼写错误的'composeWithDevTools'我试图导入'composeWitdhDevTools'愚蠢的我...请检查导入。
您还可以将鼠标悬停在所有导入项上,查看是否确实导入了正确的方法.. for composeWithDevTools,当您这样做时,它应该如下所示:

(alias) function composeWithDevTools<StoreExt, StateExt>(...funcs: Array<StoreEnhancer<StoreExt>>): StoreEnhancer<StoreExt> (+1 overload)
import composeWithDevTools
bvhaajcl

bvhaajcl6#

我的解决方案:

import { createStore } from 'redux/lib/redux';

我不知道为什么,但它的工作,我创建了一个rails应用程序与react和react-redux.我得到了这个错误2次在不同的应用程序

b09cbbtk

b09cbbtk7#

我也遇到了同样的问题,在阅读了两个小时的代码后,我意识到它存在于我们传递给createSlice()的对象的定义中。

const notificationsSlice = createSlice({
  name: 'notifications',
  initialState: [],
  reducer: {...},
  extraReducers: (builder) => {...},
})

如果你仔细看,你会发现“reducer”一词末尾没有“s”,所以应该是这样的:

const notificationsSlice = createSlice({
  name: 'notifications',
  initialState: [],
  reducers: {...},
  extraReducers: (builder) => {...},
})

当组件尝试调度由该Reducer生成的操作时触发错误。

相关问题