TIL 2021.01.17
class Item extends Component {
...
// 별다른 함수 없이 state 초기값 설정
this.state = {
name: string,
count: number,
}
// state값 변경 : this.setState함수
onClick = {()=>{
this.setState({count: count+1});
}}
render() {
return <div></div>
}
}
함수형 컴포넌트의 Hook을 이용하면 생명주기 메서드에 따라서가 아니라 코드가 무엇을 하는지에 따라 나눌 수가 있습니다
setState함수가 state를 변경함 const [state, setState] = useState(initialState);
setState(newState);
setState(prevState => prevState+1);
React에서 state는 불변성을 유지해야 한다.
// 기존 people 배열엔 영향 없이 새로운 배열을 생성
const newPeople = people.filter((person) => {
return person.id !== id;
});
setPeople(newPeople);
React가 화면을 업데이트하는 과정
1.setState를 호출 (혹은 부모로부터 props를 전달 받음)
2.shouldComponentUpdate의 반환값이 true인 경우render호출
3. 가상 DOM과 실제 DOM을 비교해서 변경사항이 있으면 화면을 다시 그림
setState 함수는 LifeCycle API의 shouldComponentUpdate(nextProps, nextState)를 트리거하는데, 이 메소드의 boolean 반환값에 따라 render 호출 여부가 결정된다.shouldComponentUpdate 는 기본값으로 true를 리턴하기 때문에, 이 메소드를 재정의하지 않으면 setState 호출마다 render가 호출되는 것이다.shouldComponentUpdate를 구현해야 하는데, 이때 state의 불변성이 유지되지 않으면 내부 값들을 하나하나 확인해야 하기 때문에 로직이 복잡해진다.