Asynchronous 减速器接收到的前一状态具有意外的“类型”;函数";。参数应为具有以下键的对象:";登记册;

Asynchronous 减速器接收到的前一状态具有意外的“类型”;函数";。参数应为具有以下键的对象:";登记册;,asynchronous,redux,redux-thunk,Asynchronous,Redux,Redux Thunk,所以redux thunk给了我这个错误(或者可能不是redux thunk,而是扩展名) 商店 import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import reducers from './reducers'; const store = createStore( reducers, applyMiddleware(thunk), windo

所以redux thunk给了我这个错误(或者可能不是redux thunk,而是扩展名)

商店

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import reducers from './reducers';

const store = createStore(
    reducers,
    applyMiddleware(thunk),
    window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__()
);

export default store;
减速器

import { combineReducers } from 'redux';

import register from './register';

const reducers = combineReducers({
    register
});

export default reducers;
行动

import axios from 'axios';

export function changeDOB(payload) {
    return dispatch => {
        console.log('test');
    }
}
但是由于某种原因,当我删除
窗口时,\uuuuRedux\uDevTools\uExtension\uCompose\uuux和&window.\uuuuuRedux\uDevTools\uExtension\uCompose()
错误消失了,我不知道为什么扩展会给我这个错误,但看起来我是唯一遇到这个错误的人。我在谷歌上搜索,找不到与此错误相关的任何内容

顺便说一句,还有一个错误,因此onload会弹出该错误,当我尝试测试该操作时,它会产生以下错误:

Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.

但是当我删除这个部分
window.\uuuu REDUX\u DEVTOOLS\u EXTENSION\u COMPOSE\uuuu&&window.\uuuuuu REDUX\u DEVTOOLS\u EXTENSION\u COMPOSE()
时,我在控制台上看到一个
test
,这意味着操作成功(因为它现在就是这么做的)。但我需要这一部分是为了发展,对吧,那么我该如何处理这个问题呢。我想我在这里做错了什么。

您的商店增强器设置不正确。applyMiddleware是存储增强程序的一个示例。存储增强器是向存储添加自定义功能的高阶函数

基本上,您的所有商店增强器都希望通过同一个参数通过函数组合传入。

当您希望将多个存储增强程序传递到存储时,使用“编写”。存储增强器是向存储添加一些额外功能的高阶函数

为了简化操作,需要安装一个npm软件包:

npm install --save redux-devtools-extension
这样使用:

import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';

const store = createStore(reducer, composeWithDevTools(
  applyMiddleware(...middleware),
  // other store enhancers if any
));
如果您不想在应用程序生产时使用redux开发工具,您可以使用redux文档中的替代设置

import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import * as reducers from '../reducers/index';

let reducer = combineReducers(reducers);
let middleware = [thunk];

let finalCreateStore;

// In production, we want to use just the middleware.
// In development, we want to use some store enhancers from redux-devtools.
if (process.env.NODE_ENV === 'production') {
  finalCreateStore = applyMiddleware(...middleware)(createStore);
} else {
  finalCreateStore = compose(
    applyMiddleware(...middleware),
    require('redux-devtools').devTools()
  )(createStore);
}

let store = finalCreateStore(reducer);

非常感谢,我找到了答案,可能是因为我看的视频和我读的博文都过时了,甚至没有提到这方面的任何内容。谢谢。不过我确实有一个问题,使用这个
窗口有什么区别?\uuuuredux\udevtools\uextension\ucompose\uuuvtools\uuvtools\uextension\ucompose\uuvtools()
和这个
require('REDUX-DEVTOOLS')。DEVTOOLS()
?我在没有使用
reduxdevtools
包的情况下成功地实现了它。
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import * as reducers from '../reducers/index';

let reducer = combineReducers(reducers);
let middleware = [thunk];

let finalCreateStore;

// In production, we want to use just the middleware.
// In development, we want to use some store enhancers from redux-devtools.
if (process.env.NODE_ENV === 'production') {
  finalCreateStore = applyMiddleware(...middleware)(createStore);
} else {
  finalCreateStore = compose(
    applyMiddleware(...middleware),
    require('redux-devtools').devTools()
  )(createStore);
}

let store = finalCreateStore(reducer);