2017-11-07 3 views
0

들 아폴로 구성 요소 소품 반응는 options.update` 방법`에

가 나는 다음과 같은 질문이 당신의 도움이 필요합니다 :

상상을, 우리는 블로그 웹 사이트가있다. 저자가 작성한 게시물 목록이있는 저자 페이지가 /author/:authorId입니다. 그리고 저자는이 목록의 끝에 다른 게시물을 추가하려고합니다. 우리는 이것에 대한 돌연변이가 :

mutation PostCreateMutation($id: ID!, $title: String!) { 
    createPost(id: $id, title: $title, text: $text) { … } 
} 

을 그리고 돌연변이가 호출 된 후, 내가 모든 게시물 refetching하지 않고 UI를 업데이트 할.

update: (proxy, { data: { createPost } }) => { 
    const data = proxy.readQuery({ 
     query: AUTHOR_QUERY, 
     variables: { 
      id: ‘1’ // => i cant get authorId here =(
     } 
    }); 
} 

내가 거기에 구성 요소 소품에 액세스 할 수 없기 때문에 나는 update 방법 authorId를 얻을 질수 ... 난이 어떻게 처리해야

: 내 업데이트 기능은 다음과 같습니다 때문에, options.update 방법을 사용할 수 없습니다?

답변

1

아폴로에서, optionscan be a function instead of an object. 따라서 HOC에 전달하는 설정 객체는 다음과 같습니다.

{ 
    options: ({authorId}) => ({ 
    update: (proxy, { data: { createPost } }) => { 
     const data = proxy.readQuery({ 
      query: AUTHOR_QUERY, 
      variables: { 
       id: authorId, 
      } 
     }); 
    } 
    }), 
} 
+0

답변 해 주셔서 감사합니다! 나는 시도하고 여기에 게시 할 것입니다 =) –

+0

그것은 매력처럼 작동합니다! 고마워요! <3 –