2017-10-06 63 views
0

我不能让我的头周围商店没有一个有效的减速

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 
     } 
    } 
} 

减速。 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, 
)); 

而且多数民众赞成在我尝试挂钩的store

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); 

,我总是得到:

商店没有一个有效的减速 确保传递给combineReducers参数是一个对象,其值减速。

我在这做错了什么?我认为它的createReducer()函数?!

回答

1

的问题是在这里:

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

filter返回函数和Object.assign返回了功能,combineReducers期待的对象,每关键是减速机。

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

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

export default combineReducers({ filter }); 
0

似乎是在

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

一个错字,因为Object.assign没有参数。

+0

你是对的。但是,如果我这样写'export default combineReducers(Object.assign( filter, ));'我仍然得到错误。 – Stophface

+0

您在评论中刚写下的内容中还有一个错字。你的意思是'export default combineReducers(Object.assign(filter,{}));'? 'Object.assign'接受两个对象作为参数。 – JulienD

+0

我也试过了。同样的错误。 – Stophface

0

这是我减速的一个例子细分

//reducers/index.js 
import { combineReducers } from 'redux'; 
import MyReducer from "./MyReducer"; 

const rootReducer = combineReducers({  
myProp: MyReducer 
}); 

export default rootReducer; 


//reducer/MyReducer.js 
export default function MyReducer (state = null, action) { 
    switch (action.type) { 
     case 'MY_ACTION_TYPE': 
      return action.payload 
    } 
    return state; 
} 
相关问题