2017-09-21 76 views
0

我打电话给动作requestLoadOrders以获取我需要的订单。我正在发送类型:REQUEST,之后是SUCCESSFAILURE。取得成功是因为我的订单位于redux开发工具中的有效负载中,但我在Reducer中收到的操作是@@redux/PROBE_UNKNOWN_ACTION_z.r.p.l.z。我发现了一个关于here的线索,但是我似乎无法找到我在做什么错了?Redux动作类型为PROBE_UNKNOWN_ACTION

redux dev-tools

actions.js

import { 
    LOAD_ORDERS_REQUEST, 
    LOAD_ORDERS_SUCCESS, 
    LOAD_ORDERS_FAILURE 
} from './constants'; 

import { fetchOrders } from '../../api'; 

export const requestLoadOrders =() => { 
    return (dispatch, getState) => { 
    dispatch({ type: LOAD_ORDERS_REQUEST }); 
    fetchOrders().then(orders => { 
     dispatch({ type: LOAD_ORDERS_SUCCESS, payload: orders}); 
    }).catch(error => { 
     console.error(error); 
     dispatch({ type: LOAD_ORDERS_FAILURE, payload: error}); 
    }); 
    }; 
}; 

reducer.js

import { 
    LOAD_ORDERS_REQUEST, 
    LOAD_ORDERS_SUCCESS, 
    LOAD_ORDERS_FAILURE 
} from './constants'; 

const initialState = { 
    orders: [] 
}; 

const orderReducer = (state = initialState, { payload, type }) => { 
    switch (type) { 
    case LOAD_ORDERS_REQUEST : 
     return state; 
    case LOAD_ORDERS_SUCCESS : 
     return { ...state, orders: payload}; 
    case LOAD_ORDERS_FAILURE : 
     return { ...state, error: payload.error}; 
    default : 
     return state; 
    } 
}; 

export default orderReducer; 

我的行为得到正确出动,但我想有一个与减速机接收的问题数据。为此,我还添加了我的商店并合并了reducer文件。

store.js

import { createStore, applyMiddleware, compose } from 'redux'; 
import { routerMiddleware } from 'react-router-redux'; 
import createHistory from 'history/createBrowserHistory'; 
import thunk from 'redux-thunk'; 
import makeRootReducer from './reducers'; 

export const history = createHistory(); 

const initialState = {} 
const enhancers = []; 
const middleware = [ routerMiddleware(history), thunk ]; 

if (process.env.NODE_ENV === 'development') { 
    const devToolsExtension = window.devToolsExtension; 

    if (typeof devToolsExtension === 'function') { 
    enhancers.push(devToolsExtension()); 
    } 
} 

const composedEnhancers = compose(
    applyMiddleware(...middleware), 
    ...enhancers 
); 

const store = createStore(
    makeRootReducer, 
    initialState, 
    composedEnhancers 
); 

export default store; 

reducers.js

import { combineReducers } from 'redux'; 
import orderReducer from '../modules/Order/reducer'; 

export const makeRootReducer = asyncReducers => { 
    return combineReducers({ 
    order: orderReducer, 
    ...asyncReducers 
    }); 
} 

export default makeRootReducer; 

回答

0

我发现我错了。我应该通过在createStore()中的单词后面添加括号来执行makeRootReducer函数。

更新的store.js到createStore()部分:

const store = createStore(
    makeRootReducer(), 
    initialState, 
    composedEnhancers 
); 

是修复。