11import BackButton from '@components/BackButton'
22import Button from '@components/Button'
33import Chip from '@components/Chip'
4- import MoreButton from '@components/MoreButton'
5- import React , { useState } from 'react'
6- import { useEffect } from 'react'
4+ import React , { Suspense , lazy , useState , useEffect } from 'react'
75import { useLocation , useNavigate , useParams } from 'react-router-dom'
86import { IRecordDataType } from 'types/recordData'
97import {
@@ -13,16 +11,12 @@ import {
1311import { getCreatedDate } from './getCreatedDate'
1412import ReplyList from './ReplyList'
1513import ReplyInput from './ReplyInput'
16- import MemoizedShareModal from './ShareModal'
17- import EditModal from './EditModal'
1814import { useRef } from 'react'
19- import Modal from '@components/Modal'
2015import { deleteRecord , getRecord } from '@apis/record'
2116import { useQuery } from '@tanstack/react-query'
2217import { getChipIconName } from './getChipIconName'
2318import ImageContainer from './ImageContainer'
2419import { useUser } from '@react-query/hooks/useUser'
25- import Alert from '@components/Alert'
2620import { AxiosError } from 'axios'
2721import { createBrowserHistory } from 'history'
2822import { useResetRecoilState , useSetRecoilState } from 'recoil'
@@ -34,7 +28,13 @@ import {
3428} from '@store/detailPageAtom'
3529import { SessionStorage } from '@utils/sessionStorage'
3630import { PREVIOUS_URL } from '@assets/constant/others'
37- import NotFound from '@pages/NotFound/NotFound'
31+
32+ const MoreButton = lazy ( ( ) => import ( '@components/MoreButton' ) )
33+ const NotFound = lazy ( ( ) => import ( '@pages/NotFound/NotFound' ) )
34+ const Alert = lazy ( ( ) => import ( '@components/Alert' ) )
35+ const Modal = lazy ( ( ) => import ( '@components/Modal' ) )
36+ const MemoizedShareModal = lazy ( ( ) => import ( './ShareModal' ) )
37+ const EditModal = lazy ( ( ) => import ( './EditModal' ) )
3838
3939export default function DetailRecord ( ) {
4040 const [ shareStatus , setShareStatus ] = useState ( false )
@@ -144,54 +144,64 @@ export default function DetailRecord() {
144144 const handleBackButton = ( ) => {
145145 navigate ( `/${ SessionStorage . get ( PREVIOUS_URL ) } ` )
146146 }
147-
148147 return (
149148 < >
150149 { isError ? (
151- < NotFound />
150+ < Suspense >
151+ < NotFound />
152+ </ Suspense >
152153 ) : (
153154 < div className = "relative h-screen w-full" >
154155 { shareStatus && (
155- < Modal visible = { shareStatus } onClose = { ( ) => setShareStatus ( false ) } >
156- < MemoizedShareModal
157- setShareStatus = { setShareStatus }
158- recordId = { recordId }
159- title = { title }
160- description = { content }
161- backgroundColor = { background_color }
162- iconName = { iconName }
163- imageUrl = { imageUrls [ 0 ] }
164- />
165- </ Modal >
156+ < Suspense >
157+ < Modal
158+ visible = { shareStatus }
159+ onClose = { ( ) => setShareStatus ( false ) }
160+ >
161+ < MemoizedShareModal
162+ setShareStatus = { setShareStatus }
163+ recordId = { recordId }
164+ title = { title }
165+ description = { content }
166+ backgroundColor = { background_color }
167+ iconName = { iconName }
168+ imageUrl = { imageUrls [ 0 ] }
169+ />
170+ </ Modal >
171+ </ Suspense >
166172 ) }
167173 { editModalState && (
168- < EditModal
169- POST_ID = { POST_ID }
170- setIsDelete = { setIsDelete }
171- setEditModalState = { setEditModalState }
172- />
174+ < Suspense >
175+ < EditModal
176+ POST_ID = { POST_ID }
177+ setIsDelete = { setIsDelete }
178+ setEditModalState = { setEditModalState }
179+ />
180+ </ Suspense >
173181 ) }
174182 { isDelete && (
175- < Alert
176- mainMessage = {
177- < div className = "text-base font-semibold leading-6" >
178- μ λ§λ‘ μ΄ λ μ½λλ₯Ό
179- < br />
180- < span className = "text-sub-1" > μμ </ span > νμκ² μ΄μ?
181- </ div >
182- }
183- subMessage = { < > μμ ν 볡ꡬλ λΆκ°λ₯ν΄μ.</ > }
184- visible = { isDelete }
185- cancelMessage = "μ·¨μ"
186- confirmMessage = "μμ "
187- danger = { true }
188- onClose = { ( ) => setIsDelete ( false ) }
189- onCancel = { ( ) => setIsDelete ( false ) }
190- onConfirm = { ( ) => {
191- deleteRecordById ( POST_ID )
192- navigate ( - 1 )
193- } }
194- />
183+ < Suspense >
184+ < Alert
185+ mainMessage = {
186+ < div className = "text-base font-semibold leading-6" >
187+ μ λ§λ‘ μ΄ λ μ½λλ₯Ό
188+ < br />
189+ < span className = "text-sub-1" > μμ </ span > νμκ² μ΄μ?
190+ </ div >
191+ }
192+ subMessage = { < > μμ ν 볡ꡬλ λΆκ°λ₯ν΄μ.</ > }
193+ visible = { isDelete }
194+ cancelMessage = "μ·¨μ"
195+ confirmMessage = "μμ "
196+ danger = { true }
197+ onClose = { ( ) => setIsDelete ( false ) }
198+ onCancel = { ( ) => setIsDelete ( false ) }
199+ onConfirm = { ( ) => {
200+ deleteRecordById ( POST_ID )
201+ navigate ( - 1 )
202+ } }
203+ />
204+ </ Suspense >
195205 ) }
196206 < header className = "p-4" >
197207 < nav className = "flex justify-between" >
0 commit comments