๐ฐ Strict Mode์์ ์ ๋๋ฒ render๋๋์ง ์ดํดํ ์์๋ค.
โ local์์ ์คํํด๋ณด๋
๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋ ์ค, ๋ก์ปฌ์์ ์คํ ์ console.log๊ฐ ๋ ๋ฒ ์ฐํ๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
ํ์ธํด๋ณด๋ ๋ ๋๋ง์ด ๋๋ฒ ํธ์ถ์ด๋๋ ๊ฒ์ ์ ์ ์์๊ณ , ์ ๊ทธ๋ฐ์ง ํ์ธํด๋ณด๊ณ ์ ํ๋ค.
โ React strict mode
๊ทธ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋, index.js์ React.StrictMode๋ฅผ ๊ตฌ์ฑํด๋๋ฉด ๊ทธ๋ ๋ค๊ณ ํ๋ค.
Meta์์๋ ๋ฆฌ์กํธ์์ ์ธ์ธ์ดํํ ์ฝ๋ ๊ฐ์งํ๊ธฐ ์ํด, ๊ฐ๋ฐ๋ชจ๋์์ ์๋์ ์ผ๋ก ๋ง์ดํ ์ ๋ ๋ฒ ์ผ์ผํต๋๋ค
์ฆ, ๋ ๋ฒ ๋ง์ดํธ ์ผ์ด๋๋๋ผ๋ ๋ฌธ์ ์์ด ๋์ํด์ผ ๋ฒ๊ทธ๊ฐ ์๋ค๋ ์ฆ๊ฑฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
StrictMode๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์์๋ด๊ธฐ ์ํ ๋๊ตฌ์ ๋๋ค. Fragment์ ๊ฐ์ด UI๋ฅผ ๋ ๋๋งํ์ง ์์ผ๋ฉฐ, ์์๋ค์ ๋ํ ๋ถ๊ฐ์ ์ธ ๊ฒ์ฌ์ ๊ฒฝ๊ณ ๋ฅผ ํ์ฑํํฉ๋๋ค.
์ฃผ์
Strict ๋ชจ๋๋ ๊ฐ๋ฐ ๋ชจ๋์์๋ง ํ์ฑํ๋๊ธฐ ๋๋ฌธ์, ํ๋ก๋์ ๋น๋์๋ ์ํฅ์ ๋ผ์น์ง ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ด ์ด๋์๋ ์ง ์๋์ ๊ฐ์ด strict ๋ชจ๋๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
import React from 'react';
function ExampleApplication() {
return (
<div>
<Header />
<React.StrictMode>
<div>
<ComponentOne />
<ComponentTwo />
</div>
</React.StrictMode>
<Footer />
</div>
);
}
์์ ์์์์, Header์ Footer ์ปดํฌ๋ํธ๋ Strict ๋ชจ๋ ๊ฒ์ฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ต๋๋ค. ํ์ง๋ง, ComponentOne๊ณผ ComponentTwo๋ ๊ฐ๊ฐ์ ์์๊น์ง ๊ฒ์ฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
StrictMode๋ ์๋์ ๊ฐ์ ๋ถ๋ถ์์ ๋์์ด ๋ฉ๋๋ค.
- ์์ ํ์ง ์์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ ๋ฐ๊ฒฌ
- ๋ ๊ฑฐ์ ๋ฌธ์์ด ref ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ
- ๊ถ์ฅ๋์ง ์๋ findDOMNode ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ
- ์์์น ๋ชปํ ๋ถ์์ฉ ๊ฒ์ฌ
- ๋ ๊ฑฐ์ context API ๊ฒ์ฌ
- Ensuring reusable state
React์ ํฅํ ๋ฆด๋ฆฌ์ฆ์์ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ๋ํด์ง ์์ ์ ๋๋ค.
https://ko.reactjs.org/docs/strict-mode.html
Stricter Strict Mode: ์์ผ๋ก React๋ ๊ตฌ์ฑ ์์๊ฐ ๋ง์ดํธ ํด์ ์ฌ์ด์ ์ํ๋ฅผ ๋ณด์กดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค. ์ด์ ๋๋นํ๊ธฐ ์ํด React 18์ Strict Mode์ ๋ํ ์๋ก์ด ๊ฐ๋ฐ ์ ์ฉ ๊ฒ์ฌ๋ฅผ ๋์ ํ์ต๋๋ค.
React๋ ๊ตฌ์ฑ ์์๊ฐ ์ฒ์์ผ๋ก ๋ง์ดํธ๋ ๋๋ง๋ค ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์๋์ผ๋ก ๋ง์ดํธ ํด์ ํ๊ณ ๋ค์ ๋ง์ดํธํ์ฌ ๋ ๋ฒ์งธ ๋ง์ดํธ์์ ์ด์ ์ํ๋ฅผ ๋ณต์ํฉ๋๋ค. ์ด๋ก ์ธํด ์ฑ์ด ์ค๋จ๋๋ ๊ฒฝ์ฐ ๊ธฐ์กด ์ํ๋ก ๋ค์ ํ์ฌํ ์ ์๋๋ก ๊ตฌ์ฑ ์์๋ฅผ ์์ ํ ์ ์์ ๋๊น์ง ์๊ฒฉ ๋ชจ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
https://github.com/facebook/react/blob/main/CHANGELOG.md#react-1
'Basic > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment> (0) | 2023.02.01 |
---|---|
[React] SPA ํ๋ ์ ์ํฌ (0) | 2023.01.24 |
[React] recoil์ ์ด์ฉํ ์ํ ๊ด๋ฆฌ (0) | 2023.01.20 |
[React] infinity scroll ๋ฌดํ ์คํฌ๋กค ๋ง๋ค๊ธฐ (0) | 2023.01.15 |
[React] outlet์ ์ด์ฉํ ์ฌ์ด ๋ ์ด์์ ๊ต์ฒด (0) | 2023.01.15 |