Variable suivie introuvable ?

Voici mon code :

import { apiInitializer } from "discourse/lib/api";
import { iconNode } from "discourse-common/lib/icon-library";
import { tracked } from "@glimmer/tracking";

export default apiInitializer((api) => {
  @tracked iconName = settings.category_lock_icon || 'lock'; // Retourne 'lock' par défaut si le paramètre n'est pas défini
  @tracked lockIcon = iconNode(this.iconName);

Frustrant, la console du navigateur m’indique que ReferenceError: iconName is not defined. En regardant le fichier dans les outils de développement du navigateur, voici à quoi il ressemble :

iconName = settings.category_lock_icon || 'lock'; // Retourne 'lock' par défaut si le paramètre n'est pas défini
lockIcon = (0, _iconLibrary.iconNode)((void 0).iconName);

Ceci, comparé à un autre composant que j’ai créé et qui utilise des variables tracked (qui fonctionne) :

#buttonIcon = (() => (dt7948.i(this, "buttonIcon"), void 0))();

, où le code original est

@tracked buttonIcon = localStorage.getItem('buttonIcon') != null ? localStorage.getItem('buttonIcon') : "bug";

Est-ce que je fais quelque chose de mal ?

Vous n’avez pas besoin de les suivre. Ils seront constants, donc inutiles.

Utilisez DIcon à la place.

1 « J'aime »

Je vois. Merci pour l’aide ; je vais essayer.

2 « J'aime »

Chaque fois que vous effectuez un suivi, vous utilisez des ressources, il est donc préférable de minimiser cela. Ce n’est pas un problème majeur, mais c’est une bonne pratique de ne pas effectuer de suivi si quelque chose ne change pas pendant une visite de page. Je suis sûr que vous pouvez vous attendre à un rafraîchissement de page entre les modifications de paramètres.

3 « J'aime »

Merci pour le conseil ! Je le garderai à l’esprit.

1 « J'aime »

Salut @merefield, je n’arrive pas à comprendre comment dépasser cette fonction :

function ifProtected() {
  if(category.read_restricted) {
    return this.lockIcon;
  }
}

Des conseils sur la façon dont je pourrais retourner cela ? Puisque c’est dans un fichier .gjs, est-il possible de retourner

return 

?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.