🙀fix: useEvent 중복 호출되던 문제
- initEvent() 함수 중복 호출로 이벤트 바인딩 중복 되던 문제 해결 - 초기화 함수 호출 최소화 - useEffect 호출 정리
This commit is contained in:
parent
4aae0bccb3
commit
58c2c3cfc9
@ -3,20 +3,17 @@
|
|||||||
import FloorPlanProvider from './FloorPlanProvider'
|
import FloorPlanProvider from './FloorPlanProvider'
|
||||||
import FloorPlan from '@/components/floor-plan/FloorPlan'
|
import FloorPlan from '@/components/floor-plan/FloorPlan'
|
||||||
import CanvasLayout from '@/components/floor-plan/CanvasLayout'
|
import CanvasLayout from '@/components/floor-plan/CanvasLayout'
|
||||||
import EventProvider from './EventProvider'
|
|
||||||
|
|
||||||
export default function FloorPlanLayout({ children }) {
|
export default function FloorPlanLayout({ children }) {
|
||||||
console.log('🚀 ~ FloorPlanLayout ~ FloorPlanLayout:')
|
console.log('🚀 ~ FloorPlanLayout ~ FloorPlanLayout:')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<EventProvider>
|
<FloorPlanProvider>
|
||||||
<FloorPlanProvider>
|
<FloorPlan>
|
||||||
<FloorPlan>
|
<CanvasLayout>{children}</CanvasLayout>
|
||||||
<CanvasLayout>{children}</CanvasLayout>
|
</FloorPlan>
|
||||||
</FloorPlan>
|
</FloorPlanProvider>
|
||||||
</FloorPlanProvider>
|
|
||||||
</EventProvider>
|
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,13 @@ import { useCanvasSetting } from '@/hooks/option/useCanvasSetting'
|
|||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
import { POLYGON_TYPE } from '@/common/common'
|
import { POLYGON_TYPE } from '@/common/common'
|
||||||
import { setSurfaceShapePattern } from '@/util/canvas-util'
|
import { setSurfaceShapePattern } from '@/util/canvas-util'
|
||||||
|
import { useEvent } from '@/hooks/useEvent'
|
||||||
|
|
||||||
export default function FirstOption() {
|
export default function FirstOption() {
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
const { canvas, settingModalFirstOptions, setSettingModalFirstOptions } = useCanvasSetting()
|
const { canvas, settingModalFirstOptions, setSettingModalFirstOptions } = useCanvasSetting()
|
||||||
const { option1, option2, dimensionDisplay } = settingModalFirstOptions
|
const { option1, option2, dimensionDisplay } = settingModalFirstOptions
|
||||||
|
const { initEvent } = useEvent()
|
||||||
|
|
||||||
// 데이터를 최초 한 번만 조회
|
// 데이터를 최초 한 번만 조회
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -42,6 +44,11 @@ export default function FirstOption() {
|
|||||||
setSettingModalFirstOptions({ ...settingModalFirstOptions, option1, option2, dimensionDisplay, fontFlag: true })
|
setSettingModalFirstOptions({ ...settingModalFirstOptions, option1, option2, dimensionDisplay, fontFlag: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
// console.log('🚀 ~ useEffect ~ initEvent:')
|
||||||
|
// initEvent()
|
||||||
|
// }, [onClickOption])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="modal-check-btn-wrap">
|
<div className="modal-check-btn-wrap">
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { usePopup } from '@/hooks/usePopup'
|
|||||||
import { v4 as uuidv4 } from 'uuid'
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
import DotLineGrid from '@/components/floor-plan/modal/grid/DotLineGrid'
|
import DotLineGrid from '@/components/floor-plan/modal/grid/DotLineGrid'
|
||||||
import { useCanvasSetting } from '@/hooks/option/useCanvasSetting'
|
import { useCanvasSetting } from '@/hooks/option/useCanvasSetting'
|
||||||
|
import { useEvent } from '@/hooks/useEvent'
|
||||||
|
|
||||||
export default function GridOption() {
|
export default function GridOption() {
|
||||||
const [gridOptions, setGridOptions] = useRecoilState(settingModalGridOptionsState)
|
const [gridOptions, setGridOptions] = useRecoilState(settingModalGridOptionsState)
|
||||||
@ -24,6 +25,8 @@ export default function GridOption() {
|
|||||||
|
|
||||||
const { gridColor, setGridColor, color } = useCanvasSetting()
|
const { gridColor, setGridColor, color } = useCanvasSetting()
|
||||||
|
|
||||||
|
const { initEvent } = useEvent()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log(gridColor, color)
|
console.log(gridColor, color)
|
||||||
setGridColor(color.hex)
|
setGridColor(color.hex)
|
||||||
@ -91,6 +94,11 @@ export default function GridOption() {
|
|||||||
setGridOptions(newGridOptions)
|
setGridOptions(newGridOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('🚀 ~ useEffect ~ initEvent:')
|
||||||
|
initEvent()
|
||||||
|
}, [gridOptions])
|
||||||
|
|
||||||
const dotLineGridProps = {
|
const dotLineGridProps = {
|
||||||
id: dotLineId,
|
id: dotLineId,
|
||||||
setIsShow: setShowDotLineGridModal,
|
setIsShow: setShowDotLineGridModal,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import PlanSizeSetting from '@/components/floor-plan/modal/setting01/planSize/Pl
|
|||||||
import { useCanvasSetting } from '@/hooks/option/useCanvasSetting'
|
import { useCanvasSetting } from '@/hooks/option/useCanvasSetting'
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil'
|
import { useRecoilState, useRecoilValue } from 'recoil'
|
||||||
import { fontSelector, globalFontAtom } from '@/store/fontAtom'
|
import { fontSelector, globalFontAtom } from '@/store/fontAtom'
|
||||||
|
import { useEvent } from '@/hooks/useEvent'
|
||||||
|
|
||||||
export default function SecondOption() {
|
export default function SecondOption() {
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
@ -24,6 +25,8 @@ export default function SecondOption() {
|
|||||||
const [fontId, setFontId] = useState(uuidv4())
|
const [fontId, setFontId] = useState(uuidv4())
|
||||||
const [planSizeId, setPlanSizeId] = useState(uuidv4())
|
const [planSizeId, setPlanSizeId] = useState(uuidv4())
|
||||||
|
|
||||||
|
const { initEvent } = useEvent()
|
||||||
|
|
||||||
const {
|
const {
|
||||||
fetchSettings,
|
fetchSettings,
|
||||||
planSizeSettingMode,
|
planSizeSettingMode,
|
||||||
@ -189,6 +192,11 @@ export default function SecondOption() {
|
|||||||
setAdsorptionRange(50)
|
setAdsorptionRange(50)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('🚀 ~ useEffect ~ initEvent:')
|
||||||
|
initEvent()
|
||||||
|
}, [adsorptionPointMode])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="modal-check-btn-wrap">
|
<div className="modal-check-btn-wrap">
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { useCallback, useEffect, useRef } from 'react'
|
import { useRef } from 'react'
|
||||||
import { useRecoilValue, useSetRecoilState } from 'recoil'
|
import { useRecoilValue, useSetRecoilState } from 'recoil'
|
||||||
import { canvasState, canvasZoomState, currentMenuState, textModeState } from '@/store/canvasAtom'
|
import { canvasState, canvasZoomState, currentMenuState, textModeState } from '@/store/canvasAtom'
|
||||||
import { fabric } from 'fabric'
|
import { fabric } from 'fabric'
|
||||||
@ -20,9 +20,15 @@ export function useEvent() {
|
|||||||
|
|
||||||
const textMode = useRecoilValue(textModeState)
|
const textMode = useRecoilValue(textModeState)
|
||||||
|
|
||||||
useEffect(() => {
|
// 이벤트 초기화 위치 수정 -> useCanvasSetting에서 세팅값 불러오고 나서 초기화 함수 호출
|
||||||
initEvent()
|
// useEffect(() => {
|
||||||
}, [currentMenu, canvas, adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, dotLineGridSetting, tempGridMode])
|
// initEvent()
|
||||||
|
// }, [currentMenu, canvas, adsorptionPointAddMode, adsorptionPointMode, adsorptionRange, dotLineGridSetting])
|
||||||
|
|
||||||
|
// 임시 그리드 모드 변경 시 이벤트 초기화 호출 위치 수정 -> GridOption 컴포넌트에서 임시 그리드 모드 변경 시 이벤트 초기화 함수 호출
|
||||||
|
// useEffect(() => {
|
||||||
|
// initEvent()
|
||||||
|
// }, [tempGridMode])
|
||||||
|
|
||||||
const initEvent = () => {
|
const initEvent = () => {
|
||||||
if (!canvas) {
|
if (!canvas) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user