Problemas com renderInOutlet

Devo estar fazendo algo muito estúpido, mas sou incapaz de ver. Espero que postar aqui me faça ver para que eu possa excluir isso antes que mais alguém saiba o quão estúpido sou.

“HELLO WORLD” deveria estar sendo renderizado na página inicial. Vejo “THIS IS THE HOMEPAGE” no console. Sei que está sendo executado. Mas não está lá.

Então tentei adicionar “Extra item” porque não tinha outras ideias. Também não está sendo renderizado.

Recebi erros antes de renomear o arquivo para .gjs, então isso é mais uma evidência de que ele está prestando atenção ao arquivo e fazendo algo acontecer.

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

export default apiInitializer("1.8.0", (api) => {
  // see if we're on the home page
  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>);
    }
  });
});

É possível que os outlets ainda não tenham sido renderizados, portanto, não há um outlet ao qual se anexar?

onPageChange é acionado em uma mudança de rota…

Isso parece o tipo de coisa estúpida de que estou falando!!

Quero que isso aconteça apenas na página inicial.

Mas sim! Se eu mover uma daquelas coisas de renderização para fora do onPageChange, ela renderiza.

Então, como faço para isso acontecer apenas se a URL for /?

Talvez eu faça um componente de verdade e adicione uma chamada a shouldRender()?

Você deve adicionar o serviço de roteador (dentro de um Componente) e configurar um getter.

2 curtidas

Muito obrigado! Eu sei na maior parte o que todas essas palavras significam!

1 curtida

Espero que isso ajude! Por favor, confirme assim que tudo estiver funcionando!

1 curtida

Ah, meu bem! Eu realmente sabia o que era um serviço! Eu realmente sabia o que era um getter! Agora meu texto está sendo renderizado na página inicial e não em outra página (e presumivelmente em todas as outras!).

4 curtidas

Este tópico foi fechado automaticamente 30 dias após a última resposta. Novas respostas não são mais permitidas.