React + Redux 기반 프로젝트에서 API 가져 오기를 통해 사용자 권한을 확인하는 connect()
ed 구성 요소가 있습니다. 가져온 사용 권한은 Redux 저장소에 저장됩니다.mapStateToProps 출력을 기반으로 connect() ed 구성 요소를 다시 렌더링
구성 요소는 기본적으로 <Can check="...">...</Can>
처럼 보이며 Google API (Redux 작업을 통해)와 대화하여 문제를 해결합니다. 권한이 부여되면 this.props.children
이 렌더링되고 그렇지 않은 경우 null
이 렌더링됩니다.
그 점을 감안하면 mapStateToProps()
은 상점의 인증 데이터에서 passes
소품을 계산합니다. 이는 방법으로 확인됩니다. mapStateToProps()
에 ownProps
매개 변수를 사용하여 "검사 할 항목"을 가져오고 passes
플래그를 계산합니다.
계속 캐싱이 진행되므로 모든 구성 요소 마운트를 다시 가져 오지 않으며 기본적으로 작동합니다. 그래도 passes
보조가 true
으로 업데이트되면 구성 요소가 다시 렌더링되지 않습니다 (그러나 탐색 라우터를 사용하여 다시 탐색 한 다음 렌더링을 다시 수행하므로 기본적으로 구성 요소가 다시 마운트 된 경우 렌더링됩니다).
mapStateToProps()
의 출력이 변경되면 connect()
에드의 구성 요소가 다시 렌더링됩니까? react-redux
의 connect()
에 대한 문서는이 말을 :
ownProps가 두 번째 인수로 지정하면, 그 값이 구성 요소에 전달 된 소품이 될 것이며, 구성 요소가 새로운 소품을 수신 할 때마다 mapStateToProps 다시 호출됩니다.
ownProps
을 전달하면 소품이 변경되거나 다른 방법으로 렌더링되는 경우에만 렌더링이 변경된다는 의미입니까? 메모와 관련하여 메모를 이해하고/mapStateToProps()
에서 함수를 반환하거나 그와 관련이없는 것은 무엇입니까?
너무 빨리 답변 해 주셔서 감사합니다. 나는 다시 점검하고 문제를 제기하기 전에 감속기 또는 선택기 논리에서 실제로 아무 것도 확인하지 않을 것입니다. 얕은 평등 점검이 문제가 될 수 있습니다. –
[connect()] (https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options) 문서에 대한 빠른 제안으로 새로운 성분을받을 때마다 _ [...] 및 mapStateToProps라는 문구가 다시 호출됩니다. _ –
PR을 환영합니다! –