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 styles from './playground.module.css'
|
||||||
import useSWR from 'swr'
|
import useSWR from 'swr'
|
||||||
import useSWRMutation from 'swr/mutation'
|
import useSWRMutation from 'swr/mutation'
|
||||||
|
import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController'
|
||||||
|
import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom'
|
||||||
|
|
||||||
export default function Playground() {
|
export default function Playground() {
|
||||||
const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState)
|
const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState)
|
||||||
@ -267,6 +269,12 @@ export default function Playground() {
|
|||||||
return <div>Error...</div>
|
return <div>Error...</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useCanvasPopupStatusController(1)
|
||||||
|
|
||||||
|
const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore)
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('🚀 ~ Playground ~ canvasPopupStatusState:', canvasPopupStatusState)
|
||||||
|
}, [canvasPopupStatusState])
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="container mx-auto p-4 m-4 border">
|
<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