state 값을 바꿔야 할 때는 setState 혹은 useState를 통해 전달받은 세터 함수를 사용 해야한다. (setState = class component, useState = function component)
배열이나 객체를 업데이트 할 때는 사본을 만든 뒤 그 사본에 값을 업데이트한 후 사본의 상태를 setState 혹은 세터 함수를 통해 업데이트 해야한다.
객체에 대한 사본을 만들 때는 spread 연산자라 불리는 ...을 사용해 처리하고, 배열에 대한 사본을 만들 때는 배열의 내장 함수들을 활용한다.
props와 state는 둘 다 컴포넌트에서 사용하거나 렌더링할 데이터를 담고 있어 비슷해 보이지만 역할은 매우 다르다.
props
state
부모 컴포넌트의 state를 자식 컴포넌트의 props로 전달하고, 자식 컴포넌트에서 특정 이벤트가 발생할 때 부모 컴포넌트의 메서드를 호출하면 props도 유동적으로 사용할 수 있다.
사용자가 웹 브라우저에서 DOM 요소들과 상호 작용하는 것을 이벤트(event)라고 한다. 자바스크립트에서 이벤트를 다루는 것과 비슷하다 생각하고 공부하면된다.
1. 이벤트 이름은 카멜 표기법으로 작성한다
2. 이벤트에 실행할 자바스크립트 코드를 전달하는 것이 아닌 함수 형태의 값을 전달한다
3. DOM 요소에만 이벤트를 설정할 수 있다
<MyComponent onClick={doSomething}/>
따라서 컴포넌트 자체적으로 이벤트를 설정할 수 없지만 전달받은 props를 컴포넌트 내부 DOM 이벤트로는 설정할 수 있다.
<div onClick={this.props.onClick}>
{/* (...) */}
</div>
👉 더 많은 이벤트를 보려면? 공식 홈페이지