2017-12-23 10 views
0

私は、apollo graphqlクエリでsubscribeToMoreメソッドを使用して、変更時に自身を更新する反応コンポーネントを持っています。それはうまくいきますが、サブスクリプションが変更を受け取ったときに、いくつかの外部機能を呼び出す必要があります。私は、UIにいくつかのヒントを表示して、物事が変わったことを示したいと思います。私たちの関数 'onUpdate'を呼び出してみましょう。このonUpdate関数をどこで呼びますか?ApolloサブスクリプションがReactでトリガーされるたびに関数を呼び出すにはどうすればよいですか?

私のコンポーネントが機能をレンダリングする前に、次のようになりますいくつかのコードを持っています

subscribeToNewPoints =() => { 
    this.props.studentSessionPointsQuery.subscribeToMore({ 
    document: NEW_POINT_STUDENT_SESSION_SUBSCRIPTION, 
    variables, 
    updateQuery: (previous, { subscriptionData }) => { 
     const newAllPoints = [ 
     subscriptionData.data.Point.node, 
     ...previous.allPoints 
     ] 
     const result = { 
     ...previous, 
     allPoints: newAllPoints 
     } 
     return result 
    } 
    }) 
} 

componentDidMount() { 
    this.subscribeToNewPoints() 
} 

私はここに私の内側にonUpdate機能を置くことになってる、またはどこか?

これが別の質問で回答されても私には納得できますが、他のすべての質問は、クエリのキャッシュを更新する方法や購読を最初に取得する方法を尋ねているようでした。

答えて

0

ReactのライフサイクルイベントComponentWillUpdateは、コンポーネントがアップデートを取得する直前に呼び出されました。 または、コンポーネントが更新を取得した直後に呼び出されるComponentDidUpdateを使用できます。

ComponentWillUpdate() { 
/*called just before an update */ 
onUpdateFunc() 
} 

ComponentDidUpdate() { 
/*called just after an update */ 
onUpdateFunc() 
} 
+0

あなたは私の質問を誤解しているかもしれないと思います。私はデータが更新されたときに関数を呼び出すことができます。コンポーネントが更新されたときではありません。私のアプリでこのようにComponentDidUpdate()を使用すると、データの更新が行われる前に関数がトリガされます。 – James

関連する問題