Zendesk-Button aktualisiert sich bei Themenwechsel ohne Seitenaktualisierung nicht korrekt

Hallo, ich habe ein Problem mit dem Verhalten der Schaltfläche „Auf Zendesk anzeigen“ im Zendesk-Plugin. Wenn bereits ein Ticket in Zendesk vorhanden ist, wird die Schaltfläche korrekt als „Auf Zendesk anzeigen“ angezeigt. Wenn ich jedoch zu einem anderen Thema navigiere, für das kein entsprechendes Zendesk-Ticket vorhanden ist, wird die Schaltfläche zunächst immer noch als „Auf Zendesk anzeigen“ angezeigt, anstatt „Zendesk-Ticket erstellen“. Erst nach einem Seitenaktualisierung wird die Schaltfläche korrekt als „Zendesk-Ticket erstellen“ angezeigt.

Es scheint, dass die Schaltflächenkomponente bei der Navigation zu einem neuen Thema nicht neu gerendert wird. Ich glaube, eine Lösung könnte darin bestehen, ein erneutes Rendern dieser Komponente auszulösen, wann immer eine Seitenänderung auftritt.

Könnte mir jemand Ratschläge geben, wie ich dies am besten angehen kann, oder ob es eine Möglichkeit gibt, die Komponente bei der Navigation korrekt zu aktualisieren? Jede Einsicht oder jeder Vorschlag wäre willkommen.

Hallo,

Ich hoffe, es geht Ihnen gut! Ich wollte nachfragen, ob es bezüglich dieses Problems ein Update gab. Ihre Erkenntnisse oder Ratschläge wären sehr willkommen.

Vielen Dank im Voraus!

Es liegt möglicherweise daran, dass die Seitenänderung nicht erkannt wird. Dies liegt wahrscheinlich daran, wie das Frontend-Framework (wahrscheinlich Ember.js, da Discourse es verwendet) die Komponentenrendern während der Navigation handhabt.

Sie können einen Listener für Routenänderungen hinzufügen, etwas Ähnliches wie dieses:


export default Component.extend({
  router: service(),

  didInsertElement() {
    this._super(...arguments);

    this.router.on('routeDidChange', () => {
      this.refreshZendeskButton();
    });
  },

  willDestroyElement() {
    this._super(...arguments);

    this.router.off('routeDidChange', this.refreshZendeskButton);
  },
});

Das muss möglicherweise geändert werden, da es setupComponent() verwendet:

Die Prüfung, ob ein gültiges Zendesk-Ticket vorhanden ist, verwendet zendesk_id. Vielleicht benötigt es ein api.onPageChange()?