단순 코드 기록/React

React_memo

일일일코_장민기 2024. 3. 19. 12:23
728x90

App
import React from "react"
import { useState} from "react"
import Counter from "./components/Counter"
import Counter2 from "./components/Counter2"
import Counter3 from "./components/Counter3"
import Counter4 from "./components/Counter4"

export default function App(){

  const [num, setNum] = useState(0);

  function handleEvent(){
    setNum(num + 1);
  }

  return(
    <>
    <h1>App</h1>
    <h2>{num}</h2>
    {/* Counter와 Counter2는 부모인 App이 재랜더링되면 자식도 항상 재랜더링됨 */}
    <Counter></Counter>
    <Counter2 initialCount={num}></Counter2>
    <Counter3 initialCount={10}></Counter3>

    {/* 부모인 App이 변경되어도 동일한 props를 전달하면 memo된 자식이 재랜더링 안됨 */}
    <Counter4 initialCount={10}></Counter4>
    <button onClick={handleEvent}>+</button>
    </>
  )
}

 

Count

export default function Counter({ initialCount = 0}){
   
    console.log("Counter")

    return(
        <>
        count값: {initialCount}
        <br></br>
        </>
    )
}

 

Count2

export default function Counter2({ initialCount = 0}){
   
    console.log("Counter2")

    return(
        <>
        count2값: {initialCount}
        <br></br>
        </>
    )
}

 

Count3

export default function Counter3({ initialCount }){
   
    console.log("Counter3")

    return(
        <>
        count3값: {initialCount}
        <br></br>
        </>
    )
}
Count4

import { memo } from "react"

//initialCount가 항상 고정된 값이기 때문에 재랜더링 할 필요없음

const Counter4 = memo(
    ({initialCount = 0}) => {
        console.log("Counter4")
        return(
            <>
                count4 값: {initialCount}
                <br></br>
            </>
        )
   
    }
)

export default Counter4;

 

 

'단순 코드 기록 > React' 카테고리의 다른 글

React_https  (0) 2024.03.19
React_useMemo(고정값)  (0) 2024.03.19
React_useEffect_addEventLister  (0) 2024.03.19
React_useEffect Hook  (0) 2024.03.19
React_reducer_자식창 연동 ADD/DEL  (0) 2024.03.19