인프런 커뮤니티 질문&답변

ch2323님의 프로필 이미지
ch2323

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

5.4) Props로 데이터 전달하기

질문 드립니다.

작성

·

193

0

안녕하세요.

강의 정말 잘 듣고 있습니다. vue 를 공부하다가 포기했었는데 강사님 강의로 인해 리액트 자신감이 생기네요.

다름이 아니라.

아래에서 onIncrease 또는 onDecrease 를 통해 상태 변경시 console.log('호출')이 되는 것을 확인했습니다.

코드가 재구성? 되는걸로 생각이 들어서 호기심에 <h2> 태그 아래 <input> 태그를 넣고 브라우져에서 input 값을 임의적으로 수정 후에 다시 버튼을 통해서 상태를 변경했는데

예상과 같이 console.log('호출')이 실행되면서 재구성되었는데 input 값은 변하지 않은것이 왜 그런지 너무 궁금합니다 ㅠ

 

const Counter = (props) => {

    console.log(props.test);

    console.log('호출')
    const [count, setCount] = useState(0);
    const onIncrease = () => {
        setCount(count + 1);
    };
    const onDecrease = () =>{
        setCount(count - 1);
    };

    return (
        <div>
            <h2>{ count }</h2>
            <button onClick={onIncrease}>+</button>
            <button onClick={onDecrease}>-</button>
        </div>
    )
};

답변 1

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

state가 변경될 때 해당 컴포넌트가 리렌더 된다는 것은 해당 컴포넌트를 담당하는 함수가 다시 실행된다는 것을 의미합니다.

리렌더 될 때 React는 State 업데이트로 인해 변경되어야 할 DOM 업데이트를 한번에 묶어서 수행합니다. 단 이때 State의 업데이트와 관련 없는 데이터는 그대로 유지합니다.

따라서 만약 input의 value에 State를 매핑해 놓지 않았다면 해당 input에 사용자가 입력한 데이터는 리렌더 되어도 유지되게 됩니다.

ch2323님의 프로필 이미지
ch2323

작성한 질문수

질문하기