TIL

MSW 세팅하기

2023.04.11

Overview

  • 에디터 리팩토링 진행 중
  • 복잡도가 높은 제품을 어떻게 하면 조금 더 읽기 좋은 코드로 작성할 수 있을까 고민 중
  • 추상화의 중요성, 함수형 프로그래밍 접근 방식에 대해 학습하고 있음
  • 취미 목적의 독서 모임을 시작함

Next.js 환경에서 MSW 세팅

Vercel의 MSW 예제를 참고하는 것이 도움이 됨.

// _app.tsx
const MSWServerInit = async () => {
  if (typeof window !== 'undefined') return
  const { server } = await import('@/mocks/server')
  server.listen()
}

const MSWClientInit = async () => {
  if (typeof window === 'undefined') return
  const { worker } = await import('@/mocks/browser')
  worker.start()
}

if (isTest()) MSWServerInit()
if (isTest() || isDev()) MSWClientInit()

useEffectOnce 커스텀 훅

React 18의 StrictMode에서는 빈 의존성배열의 useEffect가 개발 환경에서 두 번 실행됨. 이를 해결하기 위한 유틸 훅 작성.

import { EffectCallback, useEffect, useRef } from 'react'

const useEffectOnce = (callback: EffectCallback) => {
  const effectCalled = useRef(false)
  useEffect(() => {
    if (!effectCalled.current) {
      callback()
      effectCalled.current = true
    }
  }, [])
}

export default useEffectOnce

유틸성 커스텀 훅의 가치를 재평가하는 계기가 되었다.