Gevolgde variabele niet gevonden?

Dit is mijn 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'; // Fallback naar 'lock' als de instelling niet is gedefinieerd
  @tracked lockIcon = iconNode(this.iconName);

Frustrerend genoeg vertelt de browserconsole me dat ReferenceError: iconName is not defined. Als ik naar het bestand kijk in de browser dev tools, ziet het er zo uit:

iconName = settings.category_lock_icon || 'lock'; // Fallback naar 'lock' als de instelling niet is gedefinieerd
lockIcon = (0, _iconLibrary.iconNode)((void 0).iconName);

Dit, vergeleken met een ander component dat ik heb gemaakt dat tracked variabelen gebruikt (wat werkt):

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

, waar de originele code is

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

Doe ik iets verkeerd?

You don’t need to track these. They will be constant so unnecessary. You only need to track things that will be dynamic and with which you want to re-fire getters.

Use DIcon instead. eg {{icon this.myIcon}}

eg:

1 like

Ik begrijp het. Bedankt voor de hulp; ik ga het proberen.

2 likes

Elke keer dat je iets volgt, gebruik je bronnen, dus houd dat tot een minimum. Het is geen groot probleem, maar het is goede praktijk om niets te volgen als iets niet verandert tijdens een paginabezoek.

Ik geloof niet dat instellingen in ieder geval worden bijgewerkt zonder een paginarefresh.

3 likes

Bedankt voor het advies! Ik zal het in gedachten houden.

1 like

\u003cs\u003e
Hoi @merefield, ik kom niet verder met deze functie:

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

Heb je enig advies over hoe ik dit zou kunnen retourneren? Aangezien dit in een .gjs-bestand staat, is het mogelijk om te retourneren

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

?
\u003c/s\u003e


BEWERKING:
Ik heb ze gewijzigd in:

const iconName = settings.category_lock_icon || 'lock'; // Fallback naar 'lock' als de instelling niet is gedefinieerd
const lockIcon = <template>{{icon this.iconName}}</template>

Bedankt voor de duw in de juiste richting!

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