使用 react-redux / redux-watch 在 React 应用程序中访问状态时出现问题

Problem accessing state in React app using react-redux / redux-watch

当 Redux-watch store.subscribe() 被触发时(通过更新 state.Y),我试图访问我商店的 state.X,但我只能访问初始状态值.我正在使用 Redux-toolkit、React-redux、React-watch

当我按下 UI 按钮后调用“print”函数时,我的状态显示为所需的值,但是当我在 Redux-watch subscribe() 函数中调用“print”函数时, state.X 有它的初始值。知道哪里出了问题吗?

正在从商店获取状态。 const date = useSelector((state) => state.calendar);

打印函数:const print = () =>{console.log(date);}

Redux-watch 订阅功能:

let wData = watch(store.getState, 'calendar.monthData');     
const unsubscribeWData = store.subscribe(wData((newVal, oldVal, objectPath) => 
        {
            if(newVal !== oldVal)
            {
                console.log(newVal); //array with new values
                print(); //state has initial values
            }
               
        }));

Redux 工具包切片:

const calendarSlice = createSlice({
    name: "calendar",
    initialState: {
        date: "", //state.X
        monthData: [], //state.Y
    },
    reducers: {
      currentDateAction: (state,action) =>
      {
          const { newDate} = action.payload;
          state.date = newDate;
      }
    },
    extraReducers: builder => {
        builder.addCase(fetchCalendarMonthSum.fulfilled, (state, action) => {
          state.monthData = action.payload;
          })
    }
  });
export const {currentDateAction} = calendarSlice.actions;
export default calendarSlice.reducer;

最后,我通过直接调用 store.getState() 成功地在 subscribe() 函数中获取了商店的状态。

虽然我没有找到为什么变量“date”在subscribe()方法执行时设置为初始状态值,但我猜这是在subscribe()函数执行时更新状态的原因叫做。 所以要在 subscribe() 方法中获取状态:

let wData = watch(store.getState, 'calendar.monthData');     
const unsubscribeWData = store.subscribe(wData((newVal, oldVal, objectPath) => 
        {
            if(newVal !== oldVal)
            {
                console.log(store.getState().calendar.date)
            }
               
        }));