2017-02-15 1 views
0

사용자의 현재 위치에서 해당 위치 내의 마커를 찾으면 동작을 시작합니다. 데이터를 가져 와서 감속기를 업데이트하십시오.Redux - 감속기가 성공적으로 업데이트되었지만 연결된 구성 요소의 WillReceiveProps에 여전히 이전 상태가 표시됩니다.

그러나 componentWillReceiveProps에 내가 console.log(this.props) 인 경우 여전히 이전 상태가 표시됩니다. 다른 경로로 이동 한 다음 다시 돌아 오면 콘솔 로그에서 업데이트 된 소품을 componentWillReceiveProps에서 볼 수 있습니다.

업데이트 : 이것은 구성 요소 수명주기에 대한 내 이해 부족 때문이었습니다. 아래 답변을보십시오 :).

+0

'receivedNearbyMapMarkers'의 내용도 표시 할 수 있습니까 – Samo

+0

@Samo 확실! 위에 업데이트 됨. thx – user1354934

+0

감사. 'getNearbyMapMarkers' /'setCurrentPosition'가 호출되는 곳을 표시 할 수 있습니까? – Samo

답변

2

의도 한 동작입니다. 이 함수는 구성 요소가 다시 표시되기 전에 호출되므로 이전 상태를 '현재'상태와 비교할 수 있습니다.

감속기는 연결된 구성 요소에 다시 렌더링을 알리는 상태 트리를 업데이트하고 그 시점에서 this.props에 구성 요소의 이전 상태가 표시되어야합니다.

console.log 다음에 구성 요소는 다른 지시가없는 한 계속 다시 렌더링하므로 '새 소품'을 다시 탐색 할 때 이유가됩니다.

componentWillReceiveProps를 통해 전달되는 값은 다음 소품입니다. , 감속기 후, 현재로드 된 스크립트가 아니었다면

  1. (전 다시 쓰게 나를 만드는 커넥터) 나에게 나의 오래된 소품에게, 그리고 :

    당신의 라이프 사이클 코드는 기본적으로 말하고있다 있다 : a. 스크립트로드가 완료되면 맵 옵션을 재설정하고 을 다시 초기화하십시오. b. 스크립트로드가 실패하면, 그 밖에 도움이되지 않는 경우

라이프 사이클에 문서 년대 꽤 우수하고 here

을 찾을 수 있습니다 stdout에 오류를 기록, 어디 구성 요소의 의도 된 행동 실화?

+0

감사합니다. 설명서를 읽으십시오. 나는 아직도 혼란 스럽다. 내 redux 상태 업데이트 후에받는 소품에 반응해야한다면 어떤 라이프 사이클 구성 요소를 사용해야합니까? 렌더링 후에 라이프 사이클 메소드를 사용해야합니까? – user1354934

+0

나는 componentWillUpdate를 사용하여 그것을 알아 냈다. :) – user1354934

관련 문제