Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 제네릭
- 타입좁히기
- 2022
- typescript
- 폰트적용하기
- CSS
- JS console
- javascript
- NonNullable
- 개발콘텐츠
- 리액트
- React Native
- const 단언문
- 타입스크립트
- reactjs
- vue.js
- utilty type
- React.js
- Chart.js
- 누구나 자료구조와 알고리즘
- react
- TSDoc
- returnType
- 커스텀
- 레이아웃쪼개기
- 공통컴포넌트
- 반복줄이기
- 성능최적화
- 티스토리꾸미기
- click and drag
Archives
- Today
- Total
몽땅뚝딱 개발자
[React] State를 올바르게 사용하는 방법 본문
◽ State를 올바르게 사용하기
1. setState()를 활용한다.
컴포넌트를 다시 렌더링하도록 setState()를 사용한다.
contructor에서 this.state를 지정할 수 있다.
// wrong
// 직접적으로 state를 수정하는 이 코드는 컴포넌트를 다시 렌더링하지 않는다.
this.state.comment = 'Hello'
// Correct
this.setState({comment: 'Hello'});
2. state 업데이트는 비동기적으로 처리될 수도 있다.
this.props와 this.state가 비동기적으로 업데이트 될 수도 있기 때문에 해당 값에 의존해서는 안된다.
이를 수정하기 위해서는 객체보다는 함수를 인자로 사용하는 다른 형태의 setState()를 사용한다.그 함수는 이전 state를 첫번째 인자로, 그리고 업데이트가 적용된 시점의 props를 두번째 인자로 쓴다.
// Wrong
// state와 props가 업데이트가 된 값이라고 확신할 수 없다.
this.setState({
counter: this.state.counter + this.props.increment,
});
// Correct (화살표 함수)
this.setState((state, props) => ({
counter: state.counter + props.increment
}));
// Correct (일반 함수)
this.setState(function(state, props) {
return {
counter: state.counter + props.increment
};
});
3. States는 독립적인 변수를 포함할 수 있다.
constructor(props) {
super(props);
this.state = {
posts: [],
comments: []
};
}
// 별도로 호출하여 각각 업데이트 할 수 있다.
componentDidMount() {
fetchPosts().then(response => {
this.setState({
posts: response.posts
});
});
fetchComments().then(response => {
this.setState({
comments: response.comments
});
});
}
출처
'Development > React.js · Next.js' 카테고리의 다른 글
[React] 함수형 컴포넌트 (0) | 2022.08.28 |
---|---|
[React] 클래스형 컴포넌트 - Component, PureComponent / shallow-equal (0) | 2022.08.28 |
[React] 클래스형 컴포넌트 - state / state 값 변경하기 / setState() / forceUpdate() (0) | 2022.08.22 |
[React] 클래스형 컴포넌트 - Props / 자료형 선언 / 필수값과 기본값 지정 (0) | 2022.08.20 |
[React] 기본개념 (0) | 2022.05.22 |
Comments