feat: 팝업 내용 저장 및 조회 공통 hooks 추가
This commit is contained in:
parent
6f4c5e885e
commit
153c1e1f38
@ -25,6 +25,8 @@ import SampleReducer from './sample/SampleReducer'
|
||||
import styles from './playground.module.css'
|
||||
import useSWR from 'swr'
|
||||
import useSWRMutation from 'swr/mutation'
|
||||
import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController'
|
||||
import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom'
|
||||
|
||||
export default function Playground() {
|
||||
const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState)
|
||||
@ -267,6 +269,12 @@ export default function Playground() {
|
||||
return <div>Error...</div>
|
||||
}
|
||||
|
||||
useCanvasPopupStatusController(1)
|
||||
|
||||
const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore)
|
||||
useEffect(() => {
|
||||
console.log('🚀 ~ Playground ~ canvasPopupStatusState:', canvasPopupStatusState)
|
||||
}, [canvasPopupStatusState])
|
||||
return (
|
||||
<>
|
||||
<div className="container mx-auto p-4 m-4 border">
|
||||
|
||||
28
src/hooks/common/useCanvasPopupStatusController.js
Normal file
28
src/hooks/common/useCanvasPopupStatusController.js
Normal file
@ -0,0 +1,28 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect } from 'react'
|
||||
import useSWR from 'swr'
|
||||
import useSWRMutation from 'swr/mutation'
|
||||
import { useAxios } from '../useAxios'
|
||||
import { useRecoilState } from 'recoil'
|
||||
import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom'
|
||||
|
||||
export function useCanvasPopupStatusController(popupType) {
|
||||
const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore)
|
||||
const { getFetcher, postFetcher } = useAxios()
|
||||
const {
|
||||
data: popupStatus,
|
||||
error,
|
||||
isLoading,
|
||||
} = useSWR(popupType ? 'canvas-popup-status--data' : null, () => getFetcher(`http://localhost:8080/api/tutorial?popupType=${popupType}`))
|
||||
|
||||
useEffect(() => {
|
||||
if (popupStatus) {
|
||||
setCanvasPopupStatusState({ ...canvasPopupStatusState, [popupType]: popupStatus })
|
||||
}
|
||||
}, [popupStatus])
|
||||
|
||||
const { trigger, isMutating } = useSWRMutation('canvas-popup-status-update', postFetcher)
|
||||
|
||||
return { trigger }
|
||||
}
|
||||
13
src/store/canvasPopupStatusAtom.js
Normal file
13
src/store/canvasPopupStatusAtom.js
Normal file
@ -0,0 +1,13 @@
|
||||
import { atom } from 'recoil'
|
||||
|
||||
export const canvasPopupStatusStore = atom({
|
||||
key: 'canvasPopupStatusState',
|
||||
default: {
|
||||
1: {},
|
||||
2: {},
|
||||
3: {},
|
||||
4: {},
|
||||
5: {},
|
||||
6: {},
|
||||
},
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user