2017-12-23 4 views
0

Ich habe eine Reaktionskomponente, die die Methode subscribeToMore für eine apollo graphql-Abfrage verwendet, um sich selbst bei Änderungen zu aktualisieren. Es macht das ganz gut, aber ich möchte einige externe Funktion aufrufen, wenn das Abonnement eine Änderung aufnimmt. Ich möchte einige Hinweise in der Benutzeroberfläche zeigen, dass sich die Dinge geändert haben. Lassen Sie uns unsere Funktion 'onUpdate' aufrufen. Wo kann ich diese Funktion'Update 'nennen?Wie rufe ich eine Funktion auf, wenn mein Apollo-Abonnement in React ausgelöst wird?

Meine Komponente hat einige Code, der vor der Funktion wie folgt aussieht machen:

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() 
} 

Soll ich innen hier meine onUpdate Funktion setzen, oder woanders?

Verzeihen Sie mir, wenn dies in einer anderen Frage beantwortet wird, aber alle anderen, die ich finden konnte, schien zu fragen, wie man den Cache für die Abfrage aktualisieren oder wie man Abonnements überhaupt zum Laufen bringt.

Antwort

0

React hat seinen Lebenszyklus-Event ComponentWillUpdate, der aufgerufen wurde, bevor Ihre Komponente ein Update erhält. Oder Sie können ComponentDidUpdate verwenden, die aufgerufen wird, kurz nachdem Ihre Komponente ein Update erhält.

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

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

Ich denke, Sie haben meine Frage missverstanden. Ich frage, wie ich eine Funktion aufrufen kann, wenn meine Daten aktualisiert werden, nicht wenn meine Komponente aktualisiert wird. Mit ComponentDidUpdate() wie dieser in meiner App wird die Funktion ausgelöst, bevor irgendwelche Aktualisierungen der Daten auftreten. – James

Verwandte Themen