[reactjs] React 문서가 componentWillMount가 아닌 componentDidMount에서 AJAX를 권장하는 이유는 무엇입니까?
제목에 모든 것이 나와 있습니다. componentDidMount
DOM 액세스가 필요한 모든 것에 왜 적절한 지 이해 하지만 AJAX 요청이 반드시 필요한 것은 아닙니다.
무엇을 제공합니까?
답변
componentDidMount
부작용입니다. 이벤트 리스너, AJAX 추가, DOM 변경 등
componentWillMount
거의 유용하지 않습니다. 특히 서버 측 렌더링에 관심이있는 경우 (이벤트 리스너를 추가하면 오류와 누수가 발생하고 다른 많은 문제가 발생할 수 있습니다).
componentWillMount
생성자와 동일한 목적을 제공하기 때문에 클래스 구성 요소에서 제거하는 것에 대한 이야기가 있습니다 . createClass
구성 요소에 남아 있습니다 .
답변
나는 처음에도 같은 문제가 있었다. 의뢰를 해보기로 componentWillMount
했지만 여러 가지 사소한 문제로 끝납니다.
ajax 호출이 새 데이터로 완료되면 렌더링을 트리거했습니다. 어떤 시점에서 컴포넌트 렌더링은 서버에서 응답을받는 것보다 더 많은 시간이 걸렸고이 시점에서 ajax 콜백은 마운트되지 않은 컴포넌트에서 렌더링을 트리거했습니다. 이것은 일종의 엣지 케이스이지만 아마도 더 많을 것이므로을 고수하는 것이 더 안전합니다 componentDidMount
.
답변
문서에 따르면 상태를 설정하면 componentWillMount
다시 렌더링이 트리거되지 않습니다. AJAX 호출이 차단되지 않고 Promise
성공시 구성 요소의 상태를 업데이트하는 을 반환하는 경우 구성 요소가 렌더링 된 후 응답이 도착할 가능성이 있습니다. 으로 componentWillMount
트리거하지 않습니다 당신이 요청 된 데이터 렌더링 컴포넌트 존재 당신이 예상되는 동작을하지 않습니다 재 렌더링.
플럭스 라이브러리 중 하나를 사용하고 요청 된 데이터가 저장소에서 끝나는 경우 구성 요소가 연결되거나 연결된 구성 요소에서 상속되는 경우 해당 데이터의 수신이 대부분의 경우 props를 변경하므로 문제가되지 않습니다. 결국.