λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“ Study/🩺 Testing

πŸ›‘ Storybook Error : useLocation() may be used only in the context of a <Router> component.

이 μ—λŸ¬λŠ” λ©”μ„Έμ§€μ—μ„œλ„ μ•Œ 수 μžˆλ‹€ 싢이 μ»΄ν¬λ„ŒνŠΈ λ‚΄μ—μ„œ useLocation() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• λ•Œ 이건 Router μ»΄ν¬λ„ŒνŠΈ λ‚΄μ—μ„œλ§Œ μ‚¬μš© ν•  수 μžˆλ‹€κ³  κ²½κ³ ν•˜λŠ” μ—λŸ¬λ‹€.

 

μ›λž˜λŠ” 이 μ—λŸ¬λ₯Ό storybook-react-rouer λ₯Ό μ„€μΉ˜ν•΄ ν•΄κ²° ν•  수 μžˆλŠ”κ±° 같은데 졜근 μ—…λ°μ΄νŠΈ 된 React Router v.6 λž‘ ν˜Έν™˜μ΄ μ•ˆλ˜λŠ”κ±΄μ§€ 뭔지 λ‚˜λŠ” 적용이 잘 μ•ˆλλ‹€...γ… 

κ·Έλž˜μ„œ 이리저리 방법을 찾아보닀 μž„μ‹œλ°©νŽΈμœΌλ‘œ μ•„λž˜μ™€ 같이 μš°μ„  ν•΄κ²°ν–ˆλ‹€.

 

function TestRouter({ children }) {
  return (
    <BrowserRouter basename={BASE_URL}>
      <Routes>
        <Route path="/*" element={children} />
      </Routes>
    </BrowserRouter>
  );
}

 

이런 아무 역할도 μ•ˆν•˜λŠ” Router λ₯Ό ν•˜λ‚˜ λ§Œλ“€κ³ 

 

export const decorators = [
  Story => (
    <ThemeProvider theme={defaultTheme}>
      <GlobalStyle />
      <TestRouter>
        <Story />
      </TestRouter>
    </ThemeProvider>
  ),
];

.storybook/preview.js 파일 μ•„λž˜ decorators 에 좔가해쀬닀.

일단 μ΄λ ‡κ²Œ μ μš©μ„ ν•˜λ‹ˆ μ—λŸ¬ 없이 뜨긴 λœ¬λ‹€!

 

μž„μ‹œ ν•΄κ²°! ^ _γ… )b