Problème avec renderInOutlet

Je dois faire quelque chose de très stupide, mais je suis incapable de le voir. J’espère qu’en postant ici, je le verrai pour pouvoir le supprimer avant que quiconque d’autre ne sache à quel point je suis stupide.

« HELLO WORLD » devrait s’afficher sur la page d’accueil. Je vois « THIS IS THE HOMEPAGE » dans la console. Je sais que ça fonctionne. Mais ce n’est pas là.

Ensuite, j’ai essayé d’ajouter « Extra item » car je n’avais pas d’autres idées. Ça ne s’affiche pas non plus.

J’ai eu des erreurs avant de renommer le fichier en .gjs, c’est donc une preuve supplémentaire qu’il fait attention au fichier et qu’il fait quelque chose.

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("1.8.0", (api) => {
  // voir si nous sommes sur la page d'accueil
  api.onPageChange(() => {
    const router = api.container.lookup("service:router");
    const url = router?.currentURL;
    const isHomePage = url === "/";
    api.renderInOutlet("top-notices", <template>Extra item</template>);
    if (isHomePage) {
      console.log("THIS IS THE HOMEPAGE");
      api.renderInOutlet("after-header", <template>HELLO WORLD</template>);
    }
  });
});

Est-il possible que les sorties ne soient pas encore rendues, il n’y a donc pas de sortie à laquelle se connecter ?

onPageChange est déclenché lors d’un changement de route…

Ça ressemble au genre de chose stupide dont je parle !!

Je veux que cela n’arrive que sur la page d’accueil.

Mais oui ! Si je déplace l’une de ces petites fonctions de rendu hors de onPageChange, ça se rend.

Donc, comment faire en sorte que cela ne se produise que si l’URL est / ?

Peut-être que je crée un vrai composant et ajoute un appel à shouldRender() ?

vous devriez ajouter le service de routage (dans un composant) et configurer un getter.

2 « J'aime »

Un grand merci ! Je sais surtout ce que tous ces mots signifient !

1 « J'aime »

J’espère que cela vous aidera ! Veuillez confirmer une fois que tout sera opérationnel !

1 « J'aime »

Oh, bébé ! Je savais vraiment ce qu’était un service ! Je savais vraiment ce qu’était un getter ! Maintenant, mon texte s’affiche sur la page d’accueil et non sur une autre page (et probablement sur toutes les autres !).

4 « J'aime »

Ce sujet a été automatiquement fermé 30 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.