Variabile tracciata non trovata?

Questo è il mio codice:

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'; // Fallback to 'lock' if setting is not defined
  @tracked lockIcon = iconNode(this.iconName);

Frustrantemente, la console del browser mi dice ReferenceError: iconName is not defined. Guardando il file negli strumenti di sviluppo del browser, ecco come appare:

iconName = settings.category_lock_icon || 'lock'; // Fallback to 'lock' if setting is not defined
lockIcon = (0, _iconLibrary.iconNode)((void 0).iconName);

Questo, rispetto a un altro componente che ho creato che usa variabili tracciate (e che funziona):

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

, dove il codice originale è

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

Sto sbagliando qualcosa?

Non è necessario tracciarli. Saranno costanti, quindi non necessari. Usa DIcon invece.

1 Mi Piace

Capisco. Grazie per l’aiuto; lo proverò.

2 Mi Piace

Ogni volta che tracci, usi risorse, quindi riduci al minimo. Non è un grosso problema, ma è buona pratica non tracciare se qualcosa non cambierà durante una visita alla pagina. Sono sicuro che puoi aspettarti un aggiornamento della pagina tra un cambio di impostazioni e l’altro.

3 Mi Piace

Grazie per il consiglio! Lo terrò a mente.

1 Mi Piace

Ciao @merefield , non riesco a superare questa funzione:

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

Qualche consiglio su come potrei restituire questo? Dato che questo è in un file .gjs, è possibile restituire

return <template>{{icon this.iconName}}</template>

?

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