Skip to content

Commit

Permalink
feat: 에러 바운더리 적용[#82]
Browse files Browse the repository at this point in the history
  • Loading branch information
j2h30728 committed Jul 15, 2024
1 parent d701d00 commit db4c385
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 22 deletions.
10 changes: 7 additions & 3 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { Outlet } from "react-router-dom";
import { Outlet } from 'react-router-dom';
import ErrorResetBoundaryWrapper from './shared/error/ErrorResetBoundaryWrapper';

/*레이아웃 컴포넌트가 감싸집니다 */
function App() {
return <Outlet />;
return (
<ErrorResetBoundaryWrapper>
<Outlet />
</ErrorResetBoundaryWrapper>
);
}

export default App;
13 changes: 0 additions & 13 deletions src/Layout.tsx

This file was deleted.

8 changes: 2 additions & 6 deletions src/main.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import React from 'react';
import { RouterProvider } from 'react-router-dom';
import ReactDOM from 'react-dom/client';

import router from './router';
import { SKIP_MSW_WARNING_URL } from './shared/constants/msw';

import Layout from './Layout';
import Providers from './providers/index.tsx';

async function enableMocking() {
const { worker } = await import('./mocks/browser.ts');
Expand All @@ -22,9 +20,7 @@ async function enableMocking() {
enableMocking().then(() =>
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<Layout>
<RouterProvider router={router} />
</Layout>
<Providers />
</React.StrictMode>
)
);
21 changes: 21 additions & 0 deletions src/providers/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { RouterProvider } from 'react-router-dom';

import { QueryProvider } from './QueryProvider';
import { ThemeProvider } from './ThemeProvider';
import ErrorBoundary from '../shared/error/ErrorBoundary';
import FallbackComponent from '../shared/error/FallbackComponent';
import router from '../router';

const Providers = () => {
return (
<ErrorBoundary fallback={FallbackComponent}>
<QueryProvider>
<ThemeProvider>
<RouterProvider router={router} />
</ThemeProvider>
</QueryProvider>
</ErrorBoundary>
);
};

export default Providers;
19 changes: 19 additions & 0 deletions src/shared/error/ErrorResetBoundaryWrapper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { ReactNode } from 'react';
import { QueryErrorResetBoundary } from '@tanstack/react-query';

import ApiErrorBoundary from './ApiErrorBoundary';
import FallbackComponent from './FallbackComponent';

const ErrorResetBoundaryWrapper = ({ children }: { children: ReactNode }) => {
return (
<QueryErrorResetBoundary>
{({ reset }) => (
<ApiErrorBoundary fallback={FallbackComponent} onReset={reset}>
{children}
</ApiErrorBoundary>
)}
</QueryErrorResetBoundary>
);
};

export default ErrorResetBoundaryWrapper;

0 comments on commit db4c385

Please sign in to comment.