일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SessionAttribute
- Django
- EER
- 인턴 후기
- webhacking 처음
- 인턴 지원
- reversing.kr
- 메모리 포랜식
- spring
- mysql
- 동읍면 DB
- 네이버 인턴
- riceteacatpanda
- Forensic 절차
- restapi
- react
- 소프트웨어 개발보안 경진대회
- frontend
- PyAmdecoder
- Layered Architecture
- 정보보호병 후기
- 행정지역 DB
- 3단계 지역 DB
- JSTL
- jsp
- 방명록 만들기
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- Database
- 소개딩
- DBMS
- Today
- Total
웹찢남
REACT 5일차 (리액트 컴포넌트-2) 본문
프로퍼티의 경우 컴포넌트 내부에서 값을 바꿀 수 없다.
하지만 값을 바꿔야하는 경우가 있다.
그 경우 state를 사용한다.
state는 보통 버튼을 클릭하거나 입력하는 등의 이벤트와 함께 사용된다.
constructor(props){
super(props);
this.state={ =>state의 초기값을 객체형태로 정의
loading:true,
formData: 'no data',
};
this.handleData=this.handleData.bind(this); => 함수로 보냄
setTimeout(this.handleData,4000); => 4초후 함수 호출
}
handleData() {
const data='new data';
const {formData}=this.state;
this.setState({
loading:false,
formData:data+formData,
});
console.log('loading 값',this.state.loading);
}
state 사용시 주의점
1.생성자(constructor)에서 반드시 초기화 해야함
*적당한 값이 없으면 빈 객체라도 할당*
2.state값을 병경할 때는 setState 함수를 사용해야 함
*임의로 state값을 변경하면 render함수가 새로 호출되지 않음*
*따라서 setState함수를 통해 render함수또한 호출 하는 것 *
3.setState함수는 비동기로 처리되며 setState 코드 이후
연결된 함수들의 실행이 완료된 시점에 화면 동기화
4.state를 staate로 바꿔 실행해 본 결과 state는 단순 변수 명이아니라
진짜 해당 컴포넌트의 상태라 생각하는게 좋을듯. +setState도 함수임
setState를 사용하면 prevState를 통해 이전 state값을 쉽게 얻을 수 있음
handleData(data) {
this.setState(prevState => ({
loading:false,
formData: data+prevState.fromData
});
}
하지만 꼭 state를 관리하는데 setState를 쓸 필요는 없다
forceUpdate() 함수(컴포넌트 내장 함수)를 사용하면 강제로 화면을 새로고침한다.
--------------------------------------------------------------------------
컴포넌트의 생명주기(Life Cycle) 함수
1.constructor(props) 함수
-맨 처음 한번만 호출, 상태를 선언할 떄 사용
-항상 super(props);를 먼저 호출해야함
(프로퍼티와 생명 주기 상태 초기화)
2.render() 함수
-데이터가 변경되어 새 화면을 그려야 할 때 자동으로 호출
3.static getDerivedStateFromProps(props,state) 함수
-상위 컴포넌트에서 전달받은 프로퍼티로
state값을 연동할때 주로 사용, 반환값으로 state변경
4.componentDidMount() 함수
-render 함수가 JSX를 화면에 그린 이후에 호출되는 함수
-> 컴포넌트가 화면에 모두 표현된 이후 해야하는 작업들은 여기에 구현
5.shouldComponentUpdate(nextProps,nextState) 함수
-프로퍼티나 state값이 바뀌면 화면을 새로 출력해야 하는지 판단하는 함수
-반환값이 false여도 forceupdate()를 사용했다면 true로 인식
6.getSnapshotBeforeUpdate(prevProps,prevState) 함수
-컴포넌트의 변경된 내용이 가상 화면에 완성된 이후 호출되는 함수
-컴포넌트가 화면에 실제로 출력되기 전에 호출되므로 화면에 출력될 엘리먼트의 크기 또는 스크롤 위치 등의 DOM 정보에 접근할 때 사용
7.componentDidUpdate(prevProps,prevState,snapshot) 함수
-컴포넌트가 실제 화면에 출력된 이후 호출되는 함수
-getSnapshotBeforeUpdate의 반환 값과 이전 프로퍼티, 이전 state값을 사용하여 스크롤 위치를 옮기거나 커서를 이동시키는 등의 DOM정보 변경
8.componentWillUnmount() 함수
-컴포넌트가 소멸되기 직전에 호출되는 함수
-컴포넌트에서 감시하고 있는 작업들을 해제할 때 필요한 함수
'FRONT_END > REACT 공부' 카테고리의 다른 글
REACT 7일차 (스토리 북) (0) | 2020.05.22 |
---|---|
REACT 6일차 (리액트 컴포넌트-3) (0) | 2020.05.20 |
REACT 4일차 (리액트 컴포넌트-1) (0) | 2020.05.18 |
REACT 3일차 (react ES6 문법-2) (0) | 2020.05.17 |
REACT 2일차 (react ES6 문법-1) (0) | 2020.05.16 |