2016-09-06 3 views
0

다른 구성 요소가 변형을 수행하고 백엔드에서 데이터 소스가 변경된 후 구성 요소의 relayjs 캐시를 업데이트하려고합니다.데이터 소스가 분리 된 2 개의 반응 구성 요소에 대해 relayjs 캐시를 업데이트하는 방법

사용자는 D1에 데이터 종속성이있는 C1을 마운트합니다. 사용자가 D2에 데이터 종속성이있는 C2로 이동합니다. 사용자가 D2 데이터를 변경합니다. 사용자가 C1을 다시 마운트합니다.

D1 단편 관계 D2 돌연변이에 의해 영향을 받는다 : D2-> D-> D1

C1 그 단편의 캐시 된 버전이 그 데이터를 중계 이미 때문에 componentMount에 새로운 데이터를 요청하지 은닉처.

C1을 새로운 Mutated (D1)로 렌더링하는 방법은 무엇입니까? 어떻게 C1의 릴레이 캐시를 무효화합니까?

C1과 C2는 다른 페이지/React-Router 경로에 있습니다.

답변

0

돌연변이의 getFatQuery 메소드는 돌연변이의 결과로 변경 될 수있는 것을 릴레이에 알려줍니다. getConfigs로컬 그래프 데이터와 함께 필요한 데이터를 얻을 수있는 변이 형 쿼리를 생성합니다 (과/언더 페치없이).

그래프 구조에 따라 다르게 보일 수 있지만 여기에 설명 할 예제가 있습니다. d2는 할 일 항목이고 d1은 할 일 목록이라고 가정합니다. http://blog.pathgather.com/blog/a-beginners-guide-to-relay-mutations 릴레이 documentation - 릴레이 돌연변이에서 광범위한 모습이 블로그 게시물을 살펴 들어

class UpdateTodoMutation extends Relay.Mutation { 
    getFatQuery() { 
    return Relay.QL` 
     fragment on updateTodoPayload { 
     todo { 
      title, 
      dueDate, 
      completed, 
     } 
     viewer { 
      todos, 
     }, 
     } 
    `; 
    } 
} 

.

+0

* 당신이 말하는 것은 사실입니다. 그러나 내 상황은 다르다 : C1D1과 C2D2 사이에는 아무런 관련이 없다. * 예 : C1D1은 TodoList입니다. C2D2는 영화입니다. * 달성하고자하는 것은 C2D2 페이지에서 새로운 영화 변이가 실행되고 C1D1이있는 페이지로 사용자 전환 할 때입니다. C1D1 캐시를 무효화하고 새로운 영화가 추가 된 새로운 TodoList를 얻고 싶습니다. 보이는 것처럼 * TodoList에 동영상을 추가하는 논리는 제어하지 않는 다른 비즈니스 계층에서 실행됩니다. – redcom

+0

'forceFetch'를 사용해 보셨습니까? –

+0

예, 실제 해결 방법은 forceFetch입니다. 나는 C1D1에서 구독을 사용할 수 있을지 모르지만 어떻게해야할지 모르겠다. – redcom