javascript - Store 没有有效的Reducer

标签 javascript reactjs react-native redux react-redux

我无法理解它

actions.js

export const UPDATE = "UPDATE";

utils.js

export default function createReducer(initialState, handlers) {
    return function reducer(state = initialState, action) {
        if (handlers.hasOwnProperty(action.type)) {
            return handlers[action.type](state, action)
        } else {
            return state
        }
    }
}

reducer.js

import createReducer from "../../lib/utils.js";
import * as actions from "./actions.js";

export const filter = createReducer({}, {

}); 

combinedReducers.js

import { 
    combineReducers
} from "redux";
import filter from "../container/filter/reducer.js";

export default combineReducers(Object.assign(
    filter,
));

这就是我尝试连接商店的地方。

index.android.js

import React, { Component } from "react";
import {
  AppRegistry,
} from "react-native";
import { 
  Provider 
} from "react-redux";
import { 
  createStore, 
  applyMiddleware, 
  compose,
} from "redux";
import {
  createLogger,
} from "redux-logger";
import reducer from "./src/lib/reducers.js";
import thunkMiddleware from "redux-thunk";
import App from "./src/config/App.js"

const loggerMiddleware = createLogger({ predicate: (getState, action) => __DEV__});

function configureStore(initialState) {
  const enhancer = compose(
    applyMiddleware(
      thunkMiddleware,
      loggerMiddleware,
    ),
  );
  return createStore(reducer, initialState, enhancer);
}

const store = configureStore({});

const HelloWorld = () => {
  <Provider store={store}>
    <App/>
  </Provider>
}
AppRegistry.registerComponent("...", () => HelloWorld);

我总是得到:

Store does not have a valid reducer Make sure the argument passed to combineReducers is an object whose values are reducers.

我在这里做错了什么?我假设它是 createReducer() 函数?!

最佳答案

问题出在这里:

export default combineReducers(Object.assign(
    filter,
));

filter 返回一个函数,Object.assign 返回该函数,combineReducers 期望一个每个键都是一个 reducer 的对象。

所以你的代码应该是这样的:

export default combineReducers(Object.assign({ filter } ));

export default combineReducers({ filter });

关于javascript - Store 没有有效的Reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608757/

相关文章:

javascript - 如何在Firestore中正确使用arrayUnion?

javascript - React : Changed state in Child component. 如何查看父组件的变化?

javascript - 在用户导航之前 react : Restore scroll position/Calling history. Replace()

node.js - package.json中的首页条目出现错误

reactjs - React 中真实 DOM 和虚拟 DOM 的真实例子是什么?

react-native - React Native 是否支持 Apple 的 M1 macbook pro?

javascript - 两个对象和一个 bool 值之间的复杂过滤器

javascript - 如何选择每行中具有特定类别的最后一个元素?

javascript - 需要从附加到 onload 事件的函数返回一个变量

javascript - React-native-map 标记颜色没有改变