Glimmer 组件更改检测未生效 - @tracked 数组中属性突变

嗯,那很奇怪。数组赋值技巧通常是有效的。

我发现的一个替代方法是让数组中的对象来自一个具有自己跟踪属性的类。例如:

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 of your code
}

这可能比创建一堆普通对象更冗长,但我发现它更容易扩展和推理,特别是如果你需要做一些事情,比如将数据传递给嵌套组件。

4 个赞