You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已触发SAVE_ORDERS_SUCCESS但Redux未保存订单状态(已定位原因)

Redux状态读取错误问题解决记录

问题背景与根源

此前遇到的问题:代码已触发SAVE_ORDERS_SUCCESS,且reducer中能打印出有效payload,但误以为Redux未保存状态。实际问题根源:错误通过useSelector(state => state.auth)访问订单数据,而订单状态实际存储在getOrdersReducer对应的reducer分支中。

相关代码展示

1. 状态分发调用代码

dispatch(getOrdersList())
    .then(() => console.log('save'))
    .catch(err => console.log('eeeS'));

2. API请求函数

const getOrdersList = (data = {}) => {
  const url = `get_all_order`;
  const user = JSON.parse(localStorage.getItem('user'));

  const headers = {
    access_token: user.data.token
  };

  const body = {
    ...data,
    type: data.admin_id ? null : 'super'
  };

  return apiCall(url, body, headers).then(response => response);
};

export default {
  getOrdersList
};

3. 订单列表Reducer

import {
  SAVE_ORDERS_SUCCESS,
  SAVE_ORDERS_FAILURE,
  GETTING_DATA
} from 'actions/types';

const initialState = {
  ordersData: null,
  isLoading: false,
  error: null
};

export default function (state = initialState, action) {
  const { type, payload } = action;
  console.log('🚀 ~ file: getOrdersReducer.js:15 ~ payload:', payload);

  switch (type) {
    case GETTING_DATA:
      return { ...state, isLoading: true, error: null };
    case SAVE_ORDERS_SUCCESS:
      return { ...state, isLoading: false, ordersData: payload.response };
    case SAVE_ORDERS_FAILURE:
      return { ...state, isLoading: false, error: action.payload };
    default:
      return state;
  }
}

4. 合并Reducer

import { combineReducers } from 'redux';
import auth from './auth';
import message from './message';
import getOrdersReducer from './getOrdersReducer';

export default combineReducers({
  getOrdersReducer,
  auth,
  message
});

5. Action类型常量

export const GETTING_DATA = 'GETTING_DATA';
export const SET_MESSAGE = 'SET_MESSAGE';
export const CLEAR_MESSAGE = 'CLEAR_MESSAGE';

export const SAVE_ORDERS_SUCCESS = 'SAVE_ORDERS_SUCCESS';
export const SAVE_ORDERS_FAILURE = 'SAVE_ORDERS_FAILURE';

6. Store配置

import { legacy_createStore as createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import rootReducer from './reducers';

const middleware = [thunk];

const store = createStore(
  rootReducer,
  composeWithDevTools(applyMiddleware(...middleware))
);

export default store;

内容的提问来源于stack exchange,提问作者Long.H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:42:43