2017-11-07 5 views
0

みんなアポロコンポーネントの小道具に反応は、options.update`方法 `で

は、私は、次の質問持っているあなたの助けを必要とする:

は想像を、私たちはブログのウェブサイトを持っています。彼は/author/:authorIdを作成した投稿のリストを含む著者ページを持っています。著者はこのリストの最後に別の投稿を追加したいと考えています。 我々はこのために変異があります

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

を突然変異が呼び出された後、私はすべての記事を再フェッチすることなく、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 –

関連する問題