2017-09-21 2 views
0

나는 필요한 명령을 가져 오기 위해 requestLoadOrders 액션을 호출합니다. 나는 유형으로 파견하고있다 : REQUEST 그리고 그 후 SUCCESS 또는 FAILURE. 내 명령은 redux 개발 도구의 페이로드에 있기 때문에 가져 오기가 성공했지만 내 감속기에서받은 동작은 @@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; 

내 행동은 올바르게 파견 얻을,하지만 난 만회 수신에 문제가있어 가정의 데이터. 그 때문에 저도 가게와 합쳐진 감속재 파일을 추가했습니다.

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

내 실수를 발견했다. createRootReducer 함수는 createStore()에서 단어 뒤에 대괄호를 추가하여 실행해야합니다.

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

은 수정했다 :

store.js에의 createStore() 부분을 업데이트.

관련 문제