Detecção de Alterações do Componente Glimmer Não Funciona - Mutando Propriedades em Array @tracked

Hmm, isso é estranho. Fazer o truque de atribuição de array geralmente funciona.

Uma alternativa que encontrei é fazer com que os objetos no array sejam de uma classe com suas próprias propriedades rastreadas. Algo como:

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 do seu código
}

Pode ser mais verboso do que criar um monte de objetos simples, mas descobri que facilita a extensão e a compreensão, especialmente se você precisar fazer algo como passar os dados para componentes aninhados.

4 curtidas