🚜

【Lightning Web Component】@trackをつけなくても変更検知される場合とされない場合がある

2022/11/03に公開

はじめに

今回はLightning Web Component(以降:LWC)での変数の変更検知について@trackをつけなくても変更検知される場合とされない場合があることについて書いていきます。

@trackをつけなくても変更検知されるもの

フィールドについては@trackをつけなくても変更検知がされます。

import { LightningElement } from 'lwc';

export default class ReactivityExample extends LightningElement {
  bool = true; //@track bool = true;としなくて良い
  number = 42; //@track number = 42;としなくて良い
  obj = { name: 'John' };
  //・・・
}

@trackをつけないと変更検知されないもの

オブジェクトや配列は@trackをつけないとプロパティの変更が検知されません。
そのためフロントにてオブジェクトの中身を表示している場合、@trackをつけることでオブジェクトの中身の変更を検知することができ、コンポーネントを再レンダリングすることができます。

import { LightningElement } from 'lwc';

export default class ReactivityExample extends LightningElement {
  bool = true;
  number = 42;
  obj = { name: 'John' };//@trackを付けないとオブジェクトのプロパティ(name)の変更は検知されない
  //・・・
}

参考

https://developer.salesforce.com/docs/component-library/documentation/ja-jp/lwc/lwc.reactivity_fields

Discussion