Glimmer 컴포넌트 변경 감지가 작동하지 않음 - @tracked 배열 속성 변경

음, 좀 이상하네. 배열 할당 트릭은 보통 잘 먹혀 주거든.

내가 찾은 대안은 배열 안의 객체를 자체적으로 추적되는 프로퍼티(tracked properties)를 가진 클래스로 만드는 거야. 이런 식으로 말이지:

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'),
    ...
  ];
  // 나머지 코드
}

단순 객체를 여러 개 만드는 것보다 코드가 더 길어질 수 있지만, 확장하기가 더 쉽고 논리적으로 이해하기가 편하다는 걸 알게 됐어. 특히 데이터를 중첩된 컴포넌트로 내려 보내야 하는 경우가 있을 때 더 그렇지.