modal.tsx 755 B

1234567891011121314151617181920212223242526272829303132333435
  1. // modalReducer.ts
  2. import { createSlice, PayloadAction } from '@reduxjs/toolkit';
  3. interface ModalState {
  4. isOpen: boolean;
  5. title: string;
  6. content: string;
  7. }
  8. const initialState: ModalState = {
  9. isOpen: false,
  10. title: '',
  11. content: '',
  12. };
  13. const modalSlice = createSlice({
  14. name: 'modal',
  15. initialState,
  16. reducers: {
  17. showModal: (state, action: PayloadAction<{ title: string; content: string }>) => {
  18. state.isOpen = true;
  19. state.title = action.payload.title;
  20. state.content = action.payload.content;
  21. },
  22. hideModal: (state) => {
  23. state.isOpen = false;
  24. state.title = '';
  25. state.content = '';
  26. },
  27. },
  28. });
  29. export const { showModal, hideModal } = modalSlice.actions;
  30. export default modalSlice.reducer;