React Hooks

React Hooks

  • ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์— State๋ฅผ ์คŒ(hooks๋Š” react์˜ state machine์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•)

  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ

  • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์— ๋น„ํ•ด ์งง์€ ์ฝ”๋“œ(this์™€ ๊ฐ™์€ ๊ทœ์น™์—†์Œ)

  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ 

useState

  • const [value, modifierValue] = setState();

  • Array๋ฅผ ๋ฆฌํ„ดํ•จ

  • modifier๋Š” re-renderํ•จ

useInput(custom hook)

const useInput = (initialValue, validator) => {
  const [value, setValue] = useState(initialValue);
  const onChange = (event) => {
    const {
      target: { value }
    } = event;
    let willUpdate = true;
    if (typeof validator === "function") {
      willUpdate = validator(value);
    }
    if (willUpdate) {
      setValue(value);
    }
  };
  return { value, onChange };
};

useEffect

๊ณต์‹๋ฌธ์„œ

  • componentDidMount, componentDidUpdate, componentWillUnmount์˜ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” hook

  • ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ dependency๋ฅผ ๋ฐ›๊ณ  dependency๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š”์ง€์— ๋”ฐ๋ผ์„œ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐ›์€ function์ด ์‹คํ–‰๋จ

  • CleanUp function(return function)์œผ๋กœ componentWillUnmount ์—ญํ• ์„ ํ•จ

useContext

๊ณต์‹๋ฌธ์„œ

  • const value = useContext(MyContext);

  • context ๊ฐ์ฒด(React.createContext)๋ฅผ ๋ฐ›์•„ ๊ทธ context์˜ ํ˜„์žฌ ๊ฐ’์„ ๋ฐ˜ํ™˜

  • context์˜ ํ˜„์žฌ ๊ฐ’์€ ํŠธ๋ฆฌ ์•ˆ์—์„œ ํ•ด๋‹น Hook์„ ํ˜ธ์ถœํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” <MyContext.Provider value={value}> ์— ์˜ํ•ด ๊ฒฐ์ •

  • useContext๋ฅผ ํ˜ธ์ถœํ•œ ์ปดํฌ๋„ŒํŠธ๋Š” context๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ญ์ƒ ๋ฆฌ๋ Œ๋”๋ง ๋จ(memoization์„ ์‚ฌ์šฉํ•ด ์ตœ์ ํ™”)

useRef

๊ณต์‹๋ฌธ์„œ

  • reference๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ components์˜ ์–ด๋–ค ๋ถ€๋ถ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

React Lifecycle

React Lifecycle

  • ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด(์ƒ๋ช…์ฃผ๊ธฐ)๋ฅผ ๊ฐ€์ง

  • ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€ ์ƒํƒœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ ์ƒ์„ฑ๋ ๋•Œ(๋งˆ์šดํŠธ) / ์—…๋ฐ์ดํŠธํ• ๋•Œ(state๊ฐ€ ๋ฐ”๋€” ๋•Œ / props๊ฐ€ ๋ฐ”๋€” ๋•Œ / ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋  ๋•Œ) / ์ œ๊ฑฐํ• ๋•Œ(์–ธ๋งˆ์šดํŠธ)

Render ๋‹จ๊ณ„

  • constructor : ํด๋ž˜์Šคํ˜•์—์„œ ์ดˆ๊ธฐ state๋ฅผ ์ •ํ•  ๋•Œ ์‚ฌ์šฉ

  • useState : hooks์—์„œ ์ดˆ๊ธฐ state๋ฅผ ์ •ํ•  ๋•Œ ์‚ฌ์šฉ

  • shouldComponentUpdate : ํด๋ž˜์Šคํ˜•์—์„œ props๋‚˜ state๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ๋ฆฌ๋ Œ๋”๋ง ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ(์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” PureComponent์‚ฌ์šฉ์„ ์ถ”์ฒœ)

  • React.memo / useMemo : hooks์—์„œ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ๋•Œ ์‚ฌ์šฉ

  • render : ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ํ•„์š”ํ•œ ์œ ์ผํ•œ ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ(hooks์—์„œ๋Š” ํ•„์š”์—†์Œ, ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ๋ณธ์ฒด ์ž์ฒด)

Commit ๋‹จ๊ณ„

  • DOM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์˜ˆ์•ฝ

  • React DOM ๋ฐ refs ์—…๋ฐ์ดํŠธ

  • componentDidMount : ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ฒซ ๋ Œ๋”๋ง์„ ๋งˆ์นœ ํ›„ ์‹คํ–‰

  • useEffect : hooks์—์„œ ์œ„์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

  • componentsDidUpdate : ๋ฆฌ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ํ›„ ์‹คํ–‰

  • componentsWillUnmount : ์ปดํฌ๋„ŒํŠธ๋ฅผ DOM์—์„œ ์ œ๊ฑฐํ•  ๋•Œ ์‹คํ–‰

  • useEffect CleanUp function : hooks์—์„œ ์œ„์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

Last updated