微信小程序のカスタムコンポーネント:データ、メソッド、プロパティの管理

1. data データ

マイクロプログラムのコンポーネントでは、テンプレートのレンダリングに使用されるプライベートデータは、data ノード内で定義する必要があります。以下に例を示します。

Component({
  /**
   * コンポーネントの初期データ
   */
  data: {
    internalValue: 0 // 内部データの初期値
  }
})

2. methods メソッド

コンポーネント内のイベントハンドラやカスタムメソッドは、methods ノードに定義します。サンプルコードは以下の通りです。

Component({
  /**
   * コンポーネントのメソッドリスト
   */
  methods: {
    incrementValue() { // イベントハンドラ
      this.setData({ internalValue: this.data.internalValue + 1 });
      this._displayCurrentValue(); // this を使ってカスタムメソッドを直接呼び出す
    },
    _displayCurrentValue() { // カスタムメソッドは _ で始めることを推奨
      wx.showToast({
        title: '現在の値は:' + this.data.internalValue,
        icon: 'none'
      });
    }
  }
})

3. properties プロパティ

マイクロプログラムのコンポーネントでは、properties は外部からコンポーネントに渡されるデータを受け取るための公開属性です。以下に例を示します。

Component({
  /**
   * コンポーネントのプロパティ定義リスト
   */
  properties: {
    upperLimit: { // プロパティの完全な定義方法【デフォルト値を指定する必要がある場合、この方式を使用することを推奨】
      type: Number, // プロパティのデータ型
      value: 10 // プロパティのデフォルト値
    },
    upperLimit: Number // プロパティの簡略定義方法【デフォルト値を指定する必要がない場合、この簡略方式を使用可能】
  }
})

4. data と properties の違い

コンポーネントにおいて、properties プロパティと data データの基本的な使い方は同じで、どちらも読み書き可能です。ただし、以下の点が異なります。

  • data は、コンポーネントのプライベートデータを格納する傾向があります。
  • properties は、外部からコンポーネントに渡されるデータを格納する傾向があります。
Component({
  methods: {
    showInfo() {
      console.log(this.data); // 出力結果:{internalValue: 0, upperLimit: 10}
      console.log(this.properties); // 出力結果:{internalValue: 0, upperLimit: 10}
      // 結果が true になるため、data データと properties プロパティは本質的に同じで、どちらも読み書き可能であることが証明されます。
      console.log(this.data === this.properties);
    }
  }
})

5. setData を使って properties の値を変更する

data データと properties プロパティは本質的に同じであるため、properties の値もページのレンダリングに使用でき、setData を使って properties 内のプロパティに再代入することも可能です。以下に例を示します。

// コンポーネントの .wxml ファイルで properties の値を使用する
<view>上限値の現在の値は:{{upperLimit}}</view>

Component({
  properties: {
    upperLimit: Number // プロパティを定義
  },
  methods: {
    incrementValue() { 
      this.setData({ upperLimit: this.properties.upperLimit + 1 }); // setData を使ってプロパティの値を更新
    }
  }
})

タグ: WeChat Mini Program Custom Component data methods properties

7月8日 21:26 投稿