source

React 문서에서는 componentWillMount가 아닌 componentDidMount에서 AJAX를 실행할 것을 권장하는 이유는 무엇입니까?

lovecheck 2023. 3. 28. 21:54
반응형

React 문서에서는 componentWillMount가 아닌 componentDidMount에서 AJAX를 실행할 것을 권장하는 이유는 무엇입니까?

왜 그런지 알겠다componentDidMount는, DOM 액세스가 필요한 모든 것에 적합합니다만, AJAX 요구에는, 통상, 반드시 필요한 것은 아닙니다.

왜 그러고 있어?

componentDidMount부작용입니다.이벤트 리스너 추가, AJAX, DOM 변환 등

componentWillMount는 거의 도움이 되지 않습니다.특히 서버측 렌더링에 관심이 있는 경우(이벤트 리스너로 인해 에러나 누수가 발생하거나 기타 많은 문제가 발생할 수 있습니다).

제거에 대한 이야기가 있다.componentWillMount클래스 컴포넌트로부터 액세스 할 수 있습니다.이것은, 생성자와 같은 목적으로 기능하기 때문입니다.계속 켜집니다.createClass구성 요소들.

저도 처음에는 같은 문제가 있었어요.나는 에 요청을 해보기로 결정했다.componentWillMount여러 가지 사소한 문제로 끝납니다.

에이잭스 콜이 새로운 데이터로 종료되었을 때 렌더링을 트리거하고 있었습니다.어떤 시점에서는 컴포넌트의 렌더링에 서버로부터의 응답을 얻는 것보다 시간이 더 걸렸고, 이 시점에서는 마운트 해제된 컴포넌트에서 Ajax 콜백이 렌더링을 트리거하고 있었습니다.이건 좀 엣지 케이스지만 아마 더 있을 거야, 그러니 계속 하는 게 안전해.componentDidMount.

의 상태를 설정하는 설명서에 따라componentWillMount재검출을 트리거하지 않습니다.AJAX 콜이 블로킹되지 않고 있으며 AJAX 콜이Promise컴포넌트의 상태를 갱신하고 컴포넌트가 렌더링되면 응답이 도착할 가능성이 있습니다.~하듯이componentWillMount는 재실행을 트리거하지 않습니다.요청된 데이터로 렌더링되는 컴포넌트인 기대했던 동작을 하지 않습니다.

플럭스 라이브러리를 사용하여 요청된 데이터가 컴포넌트가 연결된 스토어에 저장될 경우(또는 연결된 컴포넌트에서 상속됨) 해당 데이터의 수신이 최종적으로 소품을 변경할 가능성이 높기 때문에 문제가 되지 않습니다.

언급URL : https://stackoverflow.com/questions/27139366/why-do-the-react-docs-recommend-doing-ajax-in-componentdidmount-not-componentwi

반응형