라이프 사이클 방법을 알고 있다면 50%의 React를 이해했다고 할 수 있습니다.
5345 단어 React
라이프 사이클에 대해 이야기하기 전에
우선 전제로 다음과 같은 말을 할 수 있다.
React는 원래 상태의 관리, 업데이트를 묘사에 적절하게 반영하는 라이브러리입니다.또한 어셈블리의 가장 큰 역할은 드로잉입니다.
그림을 효율적으로 표시하고 업데이트하기 위해서는 Component의 라이프 사이클을 이해하는 것이 필수적입니다.
라이프 사이클
클래스 어셈블리를 처리할 때 주기는 크게 3 기간으로 나뉩니다.마운팅(마운트 시), 업데이트(업데이트 시), 언마운팅(마운트 해제 시) 순으로 표시됩니다.
공식적으로도 아래의 그림을 소개했기 때문에 이곳을 바탕으로 설명한다.
React lifecycle methods diagram
마운트 시
어셈블리 이전 시간대를 표시합니다.
예를 들어 사용자 일람을 표시하는 UI의 경우 기본 테이블의 제목과 사용자가 완성되기 전에
Loading...
표시가 마운팅 시 렌더와 같습니다.그리기가 완료되면 componentDidMount
사용자가 한눈에 볼 수 있는 API를 두드립니다.업데이트 시간
구성 요소를 표시하고 상태를 업데이트하는 시간입니다.
아까 예에서
componentDidMount
에서 사용자가 한눈에 보는 API를 두드린 후에 완성되면 데이터가 State의users에 들어갑니다.state = {
users: [
// ここの部分に入る
]
}
이 users가 []
에서 [{id: 1, name: 'hogehoge'}]
로 업데이트되어 다시 그리기 > 테이블에 사용자를 표시할 수 있음을 감지했습니다.그렇다면 예를 들어
componentDidUpdate()
어느 시기에 사용해야 하는가.새로운 사용자를 추가하고 싶으시죠.UI에서 요약 테이블에서
新規登録
버튼을 누르면 사용자 이름을 입력 > 로그인으로 설정하여 추가 모드가 나타납니다.이 경우 로그인을 눌러 API를 두드려post를 진행하지만 발송이 끝난 State의 변경을 검출하여 사용자가 한눈에 볼 수 있습니다.
componentDidUpdate(prevProps) {
if(!prevProps.succeeded && this.props.succeeded) {
// ユーザー一覧を再取得
}
}
이때 이해하기 어려운 것은 prevProps입니다.읽으면 글자처럼 옛날 Props야.그러면 componentDidUpdate
에서 업데이트된 Props 또는 State와 업데이트된 Props 또는 State를 비교할 수 있습니다.따라서 특정 상태(Props)가 업데이트될 때만 일부 처리가 가능합니다.마운트 해제
다른 구성 요소로 이동할 때만 호출됩니다.
흔히 무시되는 것은
ComponentDidMount
애니메이션과 타이머를 설정한 경우componentWillUnmount
폐기하는 것이다.그렇지 않으면 새 구성 요소의 순환이 시작된 후에도 해당 메모리가 방출되지 않습니다.unsafe 방법에 관하여
사실 이전에는 또 다른 생명주기 방법이 있었다.(지금도 하고 있지만 추천하지 않음) 예를 들어
그나저나 전적으로 개인적인 견해지만 결과적으로 생명주기 방법이 많으면 어디서 무엇이 바뀌었는지 등 시기가 어려워진다.나는 사람에게 부드럽지 않은 코드는 쉽게 할 수 있다고 생각한다.
따라서 나는 기본적으로 구성 요소의 설계를 해서
componentDidMount
, componentDidUpdate
에서 실현할 수 있도록 해야 한다고 생각한다.그 절차는 후크스의 use Effect에 의해 계승되었습니까?
기능 구성 요소의 라이프 사이클
이전에는 클래스 구성 요소가 아니면 생명주기를 사용할 수 없었다.그러나 훅스의 등장으로 Functional Component도 생명주기를 사용할 수 있다.
사용
useEffect
을 통해 특정 State의 업데이트를 간단하게 검사할 수 있습니다.React.useEffect(() => {
// なんかやる
}, [// 検知したいState ])
예를 들어 오류 코드를 검출한 후 뭔가를 하고 싶은 경우 다음과 같은 느낌이 든다.const [code, setErrCode] = React.useState<string>('')
React.useEffect(() => {
if (code) {
// codeが変更されたら何かやる
}
}, [code])
라이프 사이클 방법의 문제점?
상태의 관리, 갱신을 적절하게 묘사하기 위해서는 필수적인 생명주기 방법이라고 할 수 있지만 문제가 발생하는 경우도 있다.
흔히 볼 수 있는 것은componentDidUpdate 내에 if가 난립되어 업데이트된 검사가 적절히 진행되었는지 알기 어렵다는 것이다.
이 문제는 생명주기 방법이 좋지 않은 것이 아니라 Component의 디자인에 거의 문제가 있는 것이다.
Component가 너무 크고 기능이 너무 많다고 할 수 있다.
다음에는 Component 디자인을 보도할 예정입니다.
Reference
이 문제에 관하여(라이프 사이클 방법을 알고 있다면 50%의 React를 이해했다고 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/102Design/items/f829911cd76734cbc882텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)