Files
vf_react/src/store/slices/authModalSlice.js
2025-11-25 14:28:20 +08:00

52 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// src/store/slices/authModalSlice.js
// 认证弹窗状态管理 Redux Slice - 从 AuthModalContext 迁移
import { createSlice } from '@reduxjs/toolkit';
/**
* AuthModal Slice
* 管理统一的认证弹窗状态(登录/注册合并)
*/
const authModalSlice = createSlice({
name: 'authModal',
initialState: {
isOpen: false, // 弹窗开关状态
redirectUrl: null, // 认证成功后的重定向URL可选
},
reducers: {
/**
* 打开认证弹窗
* @param {object} action.payload - { redirectUrl?: string }
*/
openModal: (state, action) => {
state.isOpen = true;
state.redirectUrl = action.payload?.redirectUrl || null;
},
/**
* 关闭认证弹窗
*/
closeModal: (state) => {
state.isOpen = false;
state.redirectUrl = null;
},
/**
* 设置重定向URL不打开弹窗
*/
setRedirectUrl: (state, action) => {
state.redirectUrl = action.payload;
},
},
});
// 导出 actions
export const { openModal, closeModal, setRedirectUrl } = authModalSlice.actions;
// 导出 selectors
export const selectAuthModalOpen = (state) => state.authModal.isOpen;
export const selectRedirectUrl = (state) => state.authModal.redirectUrl;
// 导出 reducer
export default authModalSlice.reducer;