๋ฐ˜์‘ํ˜•

๐Ÿ”ฐ 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๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

React์˜ ํ–ฅํ›„ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋”ํ•ด์งˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

 

https://ko.reactjs.org/docs/strict-mode.html

 

Strict ๋ชจ๋“œ – React

A JavaScript library for building user interfaces

ko.reactjs.org

 

 

Stricter Strict Mode: ์•ž์œผ๋กœ React๋Š” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋งˆ์šดํŠธ ํ•ด์ œ ์‚ฌ์ด์— ์ƒํƒœ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด React 18์€ Strict Mode์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ์ „์šฉ ๊ฒ€์‚ฌ๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
React๋Š” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋งˆ์šดํŠธ๋  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž๋™์œผ๋กœ ๋งˆ์šดํŠธ ํ•ด์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งˆ์šดํŠธํ•˜์—ฌ ๋‘ ๋ฒˆ์งธ ๋งˆ์šดํŠธ์—์„œ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์•ฑ์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด ์ƒํƒœ๋กœ ๋‹ค์‹œ ํƒ‘์žฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

https://github.com/facebook/react/blob/main/CHANGELOG.md#react-1

 

GitHub - facebook/react: A declarative, efficient, and flexible JavaScript library for building user interfaces.

A declarative, efficient, and flexible JavaScript library for building user interfaces. - GitHub - facebook/react: A declarative, efficient, and flexible JavaScript library for building user interf...

github.com

 

๋ฐ˜์‘ํ˜•