Glimmer Component Wijzigingsdetectie Werkt Niet - Muteren van Eigenschappen in @tracked Array

Hmm, dat is vreemd. De array-toewijzingstruc werkt meestal.

Een alternatief dat ik heb gevonden, is om de objecten in de array te laten komen van een klasse met eigen bijgehouden eigenschappen. Iets als:

class CustomSidebarItem {
  @tracked expanded = false;
  constructor(id, label) {
    this.id = id;
    this.label = label;
  }
}

export default class CustomSidebarComponent extends Component {

  @tracked items = [
    new CustomSidebarItem('home', 'Home'),
    new CustomSidebarItem('my-posts', 'My Posts'),
    ...
  ];
  // rest van je code
}

Het kan omslachtiger zijn dan het maken van een hoop platte objecten, maar ik heb gemerkt dat het gemakkelijker uit te breiden en te redeneren is, vooral als je iets moet doen als het doorgeven van de gegevens aan geneste componenten.

4 likes