Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- redux 사용방법
- 콜백함수
- sort
- toString
- 카우치코딩
- react
- couchcoding
- useEffect
- 블럭요소
- redux toolkit
- React onClick
- JSON
- 6주포트폴리오
- 협업프로젝트
- first-child
- foreach
- line-through
- React state
- JavaScript
- Redux store
- react redux
- db.json
- javascript React
- 인라인블럭
- useSearchParams
- useParams
- 자바스크립트배포
- javascript코딩테스트
- Redux
Archives
- Today
- Total
개발하는 루루언니
outlet 사용하는법 : 페이지 전체를 랜더링 X 본문
728x90
반응형
1. 설치
\npm install react-router-dom@6
yarn add react-router-dom 2. package.json 확인해보기
"react-router-dom": "^6.4.3",
App
const queryClient = new QueryClient();
function App() {
return (
<>
<SearchHeader/>
<QueryClientProvider client={queryClient}>
<Outlet/>
</QueryClientProvider>
</>
);
}
index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import NotFound from './pages/NotFound';
import Home from './pages/Home';
import AllProducts from './pages/AllProducts';
import NewProduct from './pages/NewProduct';
import ProductDetail from './pages/ProductDetail';
import MyCart from './pages/MyCart';
const router = createBrowserRouter([
{
path:'/',
element:<App/>,
errorElement: <NotFound/>,
children:[
{index:true, path:'/' , element: <Home/>},
{path:'/products', element: <AllProducts/>},
{path:'products/new', element: <NewProduct/>},
{path:'products/:id', element: <ProductDetail/>},
{path:'carts', element: <MyCart/>},
]
}
])
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
);
<해석>
우리는 기본적으로 '/' 메인페이지를 보여줄거고 그건 App 이다.
주소를 잘못 입력할 경우 NotFound 라는 컴포넌트로 이동이 된다.
중요한건 우리가 다른 무언갈 클릭 했을때 전체 페이지 로딩이 아니라 그페이지에서 업로드 되는걸 구현하기 위해
outlet 을 설정해주는데 그걸 우리가 보는 페이지에서 바로 보여줄 수 있게 만들어 준다.
자식요소를 정해줄건데 children : {
index :true 자식요소인데 그게 기본적으로 보여주는 페이지 일거고 그건 <Videos/>야
path :'videos' 이고 보여줄 애는 <Videos/> 컴포넌트 일거야
}
728x90
'컴퓨터 정보 > 리액트' 카테고리의 다른 글
axios 공식 (0) | 2022.11.12 |
---|---|
Tanstack Query 사용해보기 (0) | 2022.11.11 |
라우팅 vs 클라이언트 사이드 라우팅 (0) | 2022.11.11 |
npm 설치 : npm i @tanstack/react-query (0) | 2022.11.11 |
useImmer 사용해보기 (0) | 2022.11.10 |