diff --git a/src/modules/NAMING.md b/src/modules/NAMING.md new file mode 100644 index 00000000..596accf4 --- /dev/null +++ b/src/modules/NAMING.md @@ -0,0 +1,156 @@ +## REDUX NAMING + +```bash +๐Ÿ“ฆ module +โ”ฃ ๐Ÿ“‚ _sample + โ”ƒโ”ฃ ๐Ÿ“‚ actions Action ํƒ€์ž…, ํ•จ์ˆ˜ + โ”ƒโ”ฃ ๐Ÿ“‚ apis Api + โ”ƒโ”ฃ ๐Ÿ“‚ models interface, Type + โ”ƒโ”ฃ ๐Ÿ“‚ reducers Reducer ํ•จ์ˆ˜ + โ”ƒโ”ฃ ๐Ÿ“‚ sagas Saga ํ•จ์ˆ˜ + โ”ƒโ”ฃ ๐Ÿ“œ index.ts +``` + +
+ +## ๐Ÿ“‚ actions + +> Action ํƒ€์ž… + +- ๋Œ€๋ฌธ์ž์™€ \_๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค. +- ๊ตฌ๋ถ„์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค. +- ๋™์‚ฌ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค. +- ๋น„๋™๊ธฐ ์š”์ฒญ ์•ก์…˜์ด ์•„๋‹ ๋• `CLIENT_` ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. + > > ๊ธฐ๋ณธ ๊ทœ์น™ + > + > - ๋ชฉ๋ก ์กฐํšŒ `GET_[์ฃผ์ฒด]_LIST` + > - ์ƒ์„ธ ์กฐํšŒ `GET_[์ฃผ์ฒด]_DETAIL` + > - ์ƒ์„ฑ/์ถ”๊ฐ€ `CREATE_[์ฃผ์ฒด]` + > - ์ˆ˜์ •/๋ณ€๊ฒฝ `UPDATE_[์ฃผ์ฒด]` + > - ์‚ญ์ œ `DELETE_[์ฃผ์ฒด]` + +> > ๋™์‚ฌ +> +> - SET, FIND, SEND, CHECK, REGISTER ... +> > ๋ช…์‚ฌ +> - LIST, DETAIL, LOG, APPROVAL ... + +```bash +// ๋“œ๋ก  ๋ชฉ๋ก +const GET_DRONE_LIST_REQUEST = 'sample/GET_DRONE_LIST_REQUEST'; + +// ์ง€๋„ ํƒ€์ž… +const CLIENT_MAPTYPE = 'sample/CLIENT_MAPTYPE'; +``` + +
+ +> Action ํ•จ์ˆ˜ +- ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ๋‹ค. +- ์ž‘์„ฑํ•œ Action ํƒ€์ž…์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ๋‹ค. + +```bash +export const getDroneList = createAsyncAction( + GET_DRONE_LIST_REQUEST, + GET_DRONE_LIST_SUCCESS, + GET_DRONE_LIST_FAILURE +)(); + +export const clientMapType = createAction(CLIENT_MAPTYPE)(); +``` + +
+ +## ๐Ÿ“‚ apis + +- ๋ณ€์ˆ˜๋ช…์€ [์ฃผ์ฒด] + API๋กœ ์ž‘์„ฑํ•œ๋‹ค. +- api๋Š” Action ํ•จ์ˆ˜๋ช…๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค. +- ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด return์€ ์ฆ‰์‹œ ํ•ด์ค€๋‹ค. + +```bash +export const sampleAPI = { + getDroneList: async () => { + return await axios.get('api/bas/dron/list....'); + } +} +``` + +
+ +## ๐Ÿ“‚ models + +- ๋ชจ๋“  interface๋Š” ํŒŒ์Šค์นผ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ, ์•ฝ์ž์ธ I๋ฅผ ๋ถ™์—ฌ์„œ ์ž‘์„ฑํ•œ๋‹ค. +- Rq, Rs interface์˜ ๊ฒฝ์šฐ I + Action๋ช… + Rq or Rs๋กœ ์ž‘์„ฑํ•œ๋‹ค. +- ์ดˆ๊ธฐ๊ฐ’์˜ ๊ฒฝ์šฐ ๋ณ€์ˆ˜๋ช…์„ init + [์ฃผ์ฒด]๋กœ ์ž‘์„ฑํ•œ๋‹ค. +- ์ดˆ๊ธฐ๊ฐ’์˜ interface๋Š” State๋กœ ๋๋‚˜๋„๋ก ์ž‘์„ฑํ•œ๋‹ค. + +```bash +export const initSample: ISampleState = { + droneList: undefined, + droneCount: 0 +} + +export interface ISampleState { + droneList: IDrone[] | undefined; + droneCount: number | 0; +} + +export interface IDrone { + groupId: string; + arcrftSno: number; + .... +} + +export interface IUpdateDroneRq { + ... +} +``` + +
+ +## ๐Ÿ“‚ reducers + +- Reducer ํ•จ์ˆ˜๋Š” ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ [์ฃผ์ฒด] + Reducer ๋กœ ์ž‘์„ฑํ•œ๋‹ค. + +```bash +export const sampleReducer = createReducer( + initSample +).handleAction(Actions.getDroneList.success, (state, action) => + produce(state, draft => {}) +); +``` + +
+ +## ๐Ÿ“‚ sagas + +- Saga ํ•จ์ˆ˜๋Š” ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Action ํ•จ์ˆ˜ + Saga ๋กœ ์ž‘์„ฑํ•œ๋‹ค. + +```bash +function* getDroneListSaga( + action: ActionType +) { + try { + } catch (error: any) {} +} +``` + +- export ํ•จ์ˆ˜๋Š” ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ [์ฃผ์ฒด] + Saga ๋กœ ์ž‘์„ฑํ•œ๋‹ค. + +```bash +export function* sampleSaga() { + yield takeEvery(Actions.getDroneList.request, getDroneListSaga); +} +``` + +
+ +## ๐Ÿ“œ index + +```bash +export * from './actions'; +export * from './apis'; +export * from './models'; +export * from './reducers'; +export * from './sagas'; +```