Rilevamento modifiche componente Glimmer non funzionante - Mutazione proprietà in array @tracked

Hmm, questo è strano. Fare il trucco dell’assegnazione dell’array di solito funziona.

Un’alternativa che ho trovato è fare in modo che gli oggetti nell’array provengano da una classe con le proprie proprietà tracciate. Qualcosa come:

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'),
    ...
  ];
  // resto del tuo codice
}

Può essere più verboso che creare un mucchio di oggetti semplici, ma ho scoperto che rende più facile estendere e ragionare attorno, specialmente se hai bisogno di fare qualcosa come passare i dati a componenti annidati.

4 Mi Piace