From 7896be6062d2fef479e985319b11fb9b0e21238c Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 20 Dec 2025 00:35:03 -0800 Subject: [PATCH] =?UTF-8?q?fix(admin-web):=20=E4=BF=AE=E5=A4=8D=20authSlic?= =?UTF-8?q?e=20=E7=9A=84=20REHYDRATE=20=E7=B1=BB=E5=9E=8B=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 addMatcher 替代 addCase 处理 REHYDRATE action 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/store/redux/slices/authSlice.ts | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/frontend/admin-web/src/store/redux/slices/authSlice.ts b/frontend/admin-web/src/store/redux/slices/authSlice.ts index 8d4c615f..2467fb55 100644 --- a/frontend/admin-web/src/store/redux/slices/authSlice.ts +++ b/frontend/admin-web/src/store/redux/slices/authSlice.ts @@ -1,4 +1,4 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { createSlice, PayloadAction, Action } from '@reduxjs/toolkit'; import { REHYDRATE } from 'redux-persist'; import type { User } from '@/types/user.types'; @@ -11,6 +11,12 @@ interface AuthState { loading: boolean; } +interface RehydrateAction extends Action { + payload?: { + auth?: AuthState; + }; +} + const initialState: AuthState = { user: null, token: null, @@ -53,17 +59,20 @@ const authSlice = createSlice({ }, }, extraReducers: (builder) => { - builder.addCase(REHYDRATE, (state, action: PayloadAction<{ auth?: AuthState } | undefined>) => { - if (action.payload?.auth) { - const rehydratedAuth = action.payload.auth; - state.user = rehydratedAuth.user; - state.token = rehydratedAuth.token; - state.refreshToken = rehydratedAuth.refreshToken; - state.permissions = rehydratedAuth.permissions; - state.isAuthenticated = rehydratedAuth.isAuthenticated; + builder.addMatcher( + (action): action is RehydrateAction => action.type === REHYDRATE, + (state, action) => { + if (action.payload?.auth) { + const rehydratedAuth = action.payload.auth; + state.user = rehydratedAuth.user; + state.token = rehydratedAuth.token; + state.refreshToken = rehydratedAuth.refreshToken; + state.permissions = rehydratedAuth.permissions; + state.isAuthenticated = rehydratedAuth.isAuthenticated; + } + state.loading = false; } - state.loading = false; - }); + ); }, });