2017-02-24 1 views
0

나는 만약 내가 궁금해서 작품을 연결하는 '돌아 오는 방법을 이해하기 위해 노력하고있어 :돌아 오는 연결하고 mapStateToProps는

  1. 매번 새로운 소품 또는
  2. 갱신 기존 구성 요소의와 상태 변화를 새로운 구성 요소를 만듭니다 상태

만약 이것이 후자 인 경우, 이것은 불변 소품의 철학에 반하는 것이 아닙니까? 소품을 어떻게 업데이트합니까?

답변

4

불변의 props에 대한 React의 철학은 구성 요소 자체 내부에서 소품을 업데이트하지 않아야 함을 의미합니다. 부모 구성 요소의 구성 요소에 새 속성 값을 전달할 수 있습니다. 이것이 componentWillReceiveProps 메소드가 존재하는 이유입니다.

기본적으로 반응 구성 요소는 props를 수신하고 HTML을 렌더링합니다. 구성 요소 이 로컬 상태를 사용할 수 있지만 Redux를 사용하면 일반적으로 필요하지 않습니다. Redux는 단일 상태 개체의 모든 상태를 관리하며 연결 ​​방법을 사용하여 전역 Redux 상태의 일부를 반응 구성 요소에 '연결할'수 있습니다. 그런 다음 해당 구성 요소 내부의 소품으로 사용할 수 있습니다.

귀하의 질문에 대답 : 대답 1과 2는 맞지 않습니다. 연결을 사용하여 구성 요소에 연결하면 상태를 소품으로 전달합니다. 구성 요소에는 상태가 없습니다 (자신의 로컬 상태를 작성하지 않는 한) 소품 만 사용합니다. redux 상태의 해당 부분이 변경되면 이러한 소품이 업데이트됩니다.

+0

빠른 답변입니다. 그래서 기존의 앱에 React를 통합하고 있기 때문에 Redux는 지금 옵션이 아닙니다. 구성 요소 외부에서 소품의 업데이트를 모방하는 올바른 방법은 무엇입니까? –

+0

반응 구성 요소를 렌더링 할 때마다 동적 소품 (즉, vaiable)을 전달할 수 있습니다. 소품을 변경할 때마다 구성 요소의 다음 방법을 순서대로 호출되는 것이다 1)'componentWillReceiveProps을()' 2)'shouldComponentUpdate()가' 3)'componentWillUpdate()가' 4)'렌더링()' 5)'componentDidUpdate()' 기본 구성 요소의 경우에만 render 메소드가 필요합니다. –

+0

제대로 이해한다면 렌더링 방법에서 "새 구성 요소 만들기"를 선택하고 기존 구성 요소가 있다면 단순히 소품 만 업데이트 할 것입니까? –