【发布时间】:2017-05-21 19:17:06
【问题描述】:
我正在使用后端编写应用程序,我需要在打开应用程序时进行。向条件正确的服务器发出请求。这应该重写整个应用程序状态。
但现在,我只能将其分配给“加载/数据”设施,并且只需要完全覆盖 Root Redux 状态。
来自服务器的响应:http://i.imgur.com/yams0M4.jpg
redux 状态:http://i.imgur.com/URCCZkN.jpg
actions/loading.js
export function fetchTodos(path) {
return function (dispatch) {
dispatch({
type: FETCH_TODOS_REQUEST,
});
return axios
.get(`http://localhost:3000${path}`)
.then((response) => {
const { data } = response;
console.log('data', data);
dispatch({
type: FETCH_TODOS_SUCCESS,
data,
});
})
.catch((error) => {
const { data } = error.response;
console.log('data', data);
dispatch({
type: FETCH_TODOS_FAILURE,
error: data,
});
});
};
reducers/index.js
const rootReducer = combineReducers({
loading,
Header,
Main,
routing: routerReducer,
});
export default rootReducer;
reducers/loading.js
export function loading(state = initialState.loading, action) {
switch (action.type) {
case FETCH_TODOS_REQUEST:
return Object.assign({}, state, {
isFetching: true,
});
case FETCH_TODOS_SUCCESS:
return Object.assign({}, state, {
isFetching: false,
data: action.data.data,
});
case FETCH_TODOS_FAILURE:
return Object.assign({}, state, {
isFetching: false,
error: action.error,
});
default:
return state;
}
}
存储/index.js
function configureStoreProd(initialState) {
return createStore(rootReducer, initialState);
}
function configureStoreDev(initialState) {
const middlewares = [
thunk,
];
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(rootReducer, initialState, composeEnhancers(
applyMiddleware(...middlewares),
),
);
【问题讨论】:
标签: javascript redux redux-thunk