๐HOC?
- Higher Order Component
- ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ฐ์์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌํดํจ.
๐HOC ๋์ ๊ตฌ์กฐ
- Auth๋ผ๋ HOC์์ Back-end์ Request๋ฅผ ๋ ๋ ค์ ํ์ฌ ํ์ด์ง์ ๋ค์ด์์๋ ์ฌ๋์ ์ํ์ ๋ณด(Admin ์ ์ ์ธ์ง, ๋ก๊ทธ์ธ๋ ์ ์ ์ธ์ง, ๋ก๊ทธ์ธ์ด ์๋ ์ ์ ์ธ์ง) ๋ฅผ ๊ฐ์ ธ์ด.
- ํ์ด์ง์ ๋ค์ด๊ฐ ์ ์๋ ์๊ฒฉ์ด ๋๋ ์ ์ ๋ฉด ๋ค์ฌ๋ณด๋ด๊ณ , ์๊ฒฉ์ด ์๋๋ ์ ์ ๋ฉด ๋ค๋ฅธ ํ์ด์ง๋ก ๋ณด๋ด๋ฒ๋ฆผ.
ex) *ํ์ด์ง ์๊ฒฉ
- ์๋ฌด๋ ์ง์ ๊ฐ๋ฅํ ํ์ด์ง: Landing Page, About Page
- ๋ก๊ทธ์ธํ ํ์๋ง ์ง์ ๊ฐ๋ฅํ ํ์ด์ง: Detail Page
- ๋ก๊ทธ์ธํ ํ์์ ์ง์ ๋ถ๊ฐ๋ฅํ ํ์ด์ง: Regitser Page, Login Page
- ๊ด๋ฆฌ์๋ง ์ง์ ๊ฐ๋ฅํ ํ์ด์ง: Admin Page
๐์์ค์ฝ๋
- Server/index.js ์์ get('/api/users/auth')๋ก API๋ฅผ ๋ง๋ค์ด ๋์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ Request๋ฅผ ์ฃผ๋ฉด,
auth middleware์์ ํ ํฐ์ ์ด์ฉํด ๋ฃ์ด๋ ์ฟ ํค๋ฅผ ์ด์ฉํด ์ ์ ์ ์๊ฒฉ์ ํ๋จํจ. - [client/src/App.js]
function App() { return ( <Router> <div> <Switch> {/* Auth HOC๋ก ๊ฐ์ธ์ผ ํจ. */} <Route exact path="/" component={Auth(LandingPage, null)} /> <Route exact path="/login" component={Auth(LoginPage, false)} /> <Route exact path="/register" component={Auth(RegisterPage, false)} /> </Switch> </div> </Router> ); }โ
'Web > Basic (Front-end)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[#6] React Hooks (0) | 2021.07.05 |
---|---|
[#5] Redux ์ด๋ก ๋ฐ Settings (0) | 2021.07.01 |
[#4] CSS Framework: Antd (0) | 2021.07.01 |
[#3] Concurrently๋ฅผ ์ด์ฉํด Front, Back server ํ๋ฒ์ ์ผ๊ธฐ (0) | 2021.07.01 |
[#2] Data Flow & Axios ์ ๋ฆฌ / Request ๋ณด๋ด๊ณ Response ๋ฐ์๋ณด๊ธฐ (0) | 2021.06.30 |