From 45e64a3c9361f1ce413eb5666c0b3d043c815deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?junh=5Feee=28=EC=9D=B4=EC=A4=80=ED=9D=AC=29?= Date: Wed, 7 Feb 2024 15:38:14 +0900 Subject: [PATCH] =?UTF-8?q?Redux-toolkit=20=EC=97=90=EB=9F=AC=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EC=98=88=EC=A0=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/_redux/features/basis/drone/droneThunk.ts | 30 ++++++++------ .../features/comn/message/messageSlice.ts | 41 +++++++++++++++++++ .../features/comn/message/messageState.ts | 21 ++++++++++ .../basis/dron/BasisDronDetailContainer.js | 2 +- 4 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 src/_redux/features/comn/message/messageSlice.ts create mode 100644 src/_redux/features/comn/message/messageState.ts diff --git a/src/_redux/features/basis/drone/droneThunk.ts b/src/_redux/features/basis/drone/droneThunk.ts index ce4f2748..d66dfd5d 100644 --- a/src/_redux/features/basis/drone/droneThunk.ts +++ b/src/_redux/features/basis/drone/droneThunk.ts @@ -2,30 +2,36 @@ import axios from '../../../../modules/utils/customAxiosUtil'; import qs from 'qs'; import { createAsyncThunk } from '@reduxjs/toolkit'; +import { isError } from '../../comn/message/messageSlice'; +import { ERROR_MESSAGE } from 'src/configs/constants'; // 드론 목록 조회 export const getDroneList = createAsyncThunk( 'basis/getDroneList', - async (data: any) => { + async (rq: string, thunkAPI) => { try { - const queryString = qs.stringify(data, { + const queryString = qs.stringify(rq, { addQueryPrefix: true, arrayFormat: 'repeat' }); - const res = await axios.get(`api/bas/dron/list${queryString}`); + const res: any = await axios.get(`api/bas/dron/list${queryString}`); - // const { - // data: { items, total }, - // errorCode - // } = res.data; + const { data, errorCode } = res; - // if (errorCode) { - // return; - // } + if (errorCode) { + return errorCode; + } - return res.data; + return data; } catch (error) { - console.error(error); + thunkAPI.dispatch( + isError({ + errorCode: ERROR_MESSAGE, + errorMessage: '처리중 오류가 발생하였습니다', + isHistoryBack: false, + isRefresh: false + }) + ); } } ); diff --git a/src/_redux/features/comn/message/messageSlice.ts b/src/_redux/features/comn/message/messageSlice.ts new file mode 100644 index 00000000..97e585e2 --- /dev/null +++ b/src/_redux/features/comn/message/messageSlice.ts @@ -0,0 +1,41 @@ +import { createSlice } from '@reduxjs/toolkit'; +import { initMsg } from './messageState'; + +const msgSlice = createSlice({ + name: 'msgSlice', + initialState: initMsg, + reducers: { + isMessage: (state, action) => { + const { messageCode, message, isHistoryBack, isRefresh } = action.payload; + state.messageCode = messageCode; + state.message = message; + state.isHistoryBack = isHistoryBack; + state.isMessage = true; + state.isRefresh = isRefresh; + }, + isNoMessage: (state, action) => { + state.messageCode = ''; + state.message = ''; + // state.isHistoryBack = false; + state.isMessage = false; + }, + isError: (state, action) => { + const { errorCode, errorMessage, isHistoryBack, isRefresh } = + action.payload; + state.errorCode = errorCode; + state.errorMessage = errorMessage; + state.isHistoryBack = isHistoryBack; + state.isRefresh = isRefresh; + state.isError = true; + }, + isNoError: (state, action) => { + // const {errorCode , errorMessage} = action.payload; + state.errorCode = ''; + state.errorMessage = ''; + // state.isHistoryBack = false; + state.isError = false; + } + } +}); + +export const { isMessage, isNoMessage, isError, isNoError } = msgSlice.actions; diff --git a/src/_redux/features/comn/message/messageState.ts b/src/_redux/features/comn/message/messageState.ts new file mode 100644 index 00000000..3ca9f581 --- /dev/null +++ b/src/_redux/features/comn/message/messageState.ts @@ -0,0 +1,21 @@ +export interface IMsgState { + messageCode: string; + message: string; + errorMessage: string; + errorCode: string; + isError: boolean; + isMessage: boolean; + isHistoryBack: boolean; + isRefresh: boolean; +} + +export const initMsg: IMsgState = { + messageCode: '', + message: '', + errorMessage: '', + errorCode: '', + isError: false, + isMessage: false, + isHistoryBack: false, + isRefresh: false +}; diff --git a/src/containers/basis/dron/BasisDronDetailContainer.js b/src/containers/basis/dron/BasisDronDetailContainer.js index 8765c9f3..933ddb60 100644 --- a/src/containers/basis/dron/BasisDronDetailContainer.js +++ b/src/containers/basis/dron/BasisDronDetailContainer.js @@ -24,7 +24,7 @@ export const BasisDronDetailContainer = props => { const dispatch2 = useDispatch2(); const testValue = useSelector2(state => state.droneState2); const testHandler = () => { - dispatch2(getDroneList({ groupId: 'C807F9', page: 1 })); + dispatch2(getDroneList({ groupId: '2A60F8', page: 1 })); dispatch2(testClient('test')); };