目次
計算されたプロパティ
基本的な使用法
計算プロパティとメソッド
計算プロパティは、関数として記述するだけでなく、オブジェクトとしても記述することができます。オブジェクトには 2 つのプロパティがあります。 getter&setter はどちらも関数であり、次のように記述します。
前のステップでは、計算されたプロパティを関数として直接記述しました。それがゲッター関数です。つまり、計算されたプロパティにはデフォルトでゲッターのみが含まれます。このゲッターは、自動的に Vue インスタンスにバインドされます。
オプションで、計算されたプロパティに値を再割り当てするときに set 関数が実行されます。パラメータ: リセットする値。セッターのこれは、自動的に Vue インスタンスにバインドされます。
Practice_すべての製品を選択
プログラミング関連の知識について詳しくは、
ホームページ ウェブフロントエンド Vue.js Vue で計算プロパティを使用する方法を 1 つの記事で学習します

Vue で計算プロパティを使用する方法を 1 つの記事で学習します

Dec 03, 2021 pm 07:30 PM
vue 計算されたプロパティ

Vue を使用してプロパティを計算するタイミングを知っていますか?計算されたプロパティを使用するにはどうすればよいですか?次の記事では、Vue 計算プロパティについて理解し、Vue 計算プロパティの基本的な使用方法を紹介します。

Vue で計算プロパティを使用する方法を 1 つの記事で学習します

計算されたプロパティ

テンプレートにロジックを入れすぎて、テンプレートが重くなりすぎて保守が困難になる場合があります。例:

<div id="app">
  {{ message.split(&#39;&#39;).reverse().join(&#39;&#39;) }}
</div>
ログイン後にコピー

このような状況では、変数メッセージを表示する反転された文字列がここにあることを理解するために、しばらく見てみる必要があります。反転された文字を使用したい場合は、テンプレート内で複数回文字列を張る場合はさらに面倒になります。したがって、複雑なロジックを扱う場合は、計算されたプロパティを使用する必要があります。 [関連する推奨事項: "vue.js チュートリアル"]

基本的な使用法

計算されたプロパティは、Vue 構成オブジェクト内のプロパティであり、次のように使用されます。

<div id="app">
   <!-- 计算属性的值可以像data数据一样,直接被使用 --> 
  {{ someComputed }}
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  computed: {
     // 返回的值,就是计算属性的值
    someComputed () {
      return &#39;some values&#39;
    }
  }
})
ログイン後にコピー

たとえば、文字列の反転文字列を取得したい場合は、計算されたプロパティを使用してそれを行うことができます:

<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符处啊: "{{ reversedMsg }}"</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  computed: {
    reversedMsg: function () {
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
ログイン後にコピー

reversedMsg の値が依存していることがわかります。 msg 値に依存するため、msg の値を変更すると、それに応じて reversedMsg の値も変更されます。

計算プロパティとメソッド

実際、上記の関数は、次のようなメソッドを使用して実現することもできます。式 メソッドでも同じ効果を実現できますが、計算されたプロパティを使用することとメソッドを使用することには本質的な違いがあります。メソッドを使用する場合、ページが再レンダリングされるたびに、次のような対応するメソッドが再実行されます。

<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符串: "{{ reversedMsg() }}"</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  methods: {
    reversedMsg: function () {
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
ログイン後にコピー

上の例では、name の値が変更されると、この時点では、メソッド実行文字列がコンソールに表示されます。これは、reversedMsg 関数が実行されたことを意味しますが、変更されたデータは何の関係もないため、このメソッドを実行する必要はありません。この関数内のロジックが非常に複雑な場合、パフォーマンスの点でも消費になります。

しかし、計算属性を使用すると、次のような現象は発生しません。

<div id="app">
  <p>{{ name }}</p>
  <p>{{ reversedMsg() }}</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    name: &#39;shanshan&#39;
  },
  methods: {
    reversedMsg: function () {
      console.log(&#39;方法执行啦&#39;);
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
vm.name = &#39;duyi&#39;;
ログイン後にコピー

この時点で、データ名を再割り当てすると、計算属性が実行されないことがわかります。 。したがって、計算プロパティとメソッドの最も重要な違いは次のとおりです:

計算プロパティは応答性の依存関係に基づいてキャッシュされます

. 計算プロパティの値は、それが依存するデータが存在する限り、常にキャッシュに格納されます。計算されたプロパティにアクセスするたびに、関数を再度実行するのではなく、キャッシュされた結果がすぐに返されます。このメソッドは毎回再レンダリングをトリガーし、メソッドを呼び出すと常に関数が再度実行されます。 それでは、なぜキャッシュが必要なのでしょうか?

計算された属性 A があり、巨大な配列を走査して膨大な計算を行う必要があるとします。次に、この計算された属性 A を使用する必要があります。キャッシュがない場合、A の関数を再度実行することになるため、パフォーマンスのオーバーヘッドが非常に大きくなります。

詳細な計算プロパティ

計算プロパティは、関数として記述するだけでなく、オブジェクトとしても記述することができます。オブジェクトには 2 つのプロパティがあります。 getter&setter はどちらも関数であり、次のように記述します。

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    name: &#39;shanshan&#39;
  },
  computed: {
    reversedMsg: function () {
      console.log(&#39;计算执行啦&#39;);
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
vm.name = &#39;duyi&#39;;
ログイン後にコピー

getter reading

前のステップでは、計算されたプロパティを関数として直接記述しました。それがゲッター関数です。つまり、計算されたプロパティにはデフォルトでゲッターのみが含まれます。このゲッターは、自動的に Vue インスタンスにバインドされます。

いつ実行されますか?

計算された属性を取得すると、get 関数が実行されます。

const vm = new Vue({
  el: &#39;#app&#39;,
  computed: {
    fullName: {
      getter () {
         // 一些代码
      },
      setter () {
         // 一些代码
      }
    }
  }
})
ログイン後にコピー

setter 設定

オプションで、計算されたプロパティに値を再割り当てするときに set 関数が実行されます。パラメータ: リセットする値。セッターのこれは、自動的に Vue インスタンスにバインドされます。

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
      }
    }
  }
})
ログイン後にコピー

計算されたプロパティに値が割り当てられても、計算されたプロパティは変更されないことに注意してください。繰り返しになりますが、計算されたプロパティは、依存する応答プロパティが変更された場合にのみ再計算されます。

Practice_Name フィルタリング

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    firstStr: &#39;&#39;
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
      },
      setter (newVal) {
        this.firstStr = newVal[0];
      }
    }
  }
})
ログイン後にコピー

Practice_すべての製品を選択

personArr: [
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, 
    des: &#39;颈椎不好&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;056482&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, 
    des: &#39;我是谁&#39;, 
    sex: &#39;f&#39;, 
    id: &#39;157894&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, des: &#39;我长得很好看&#39;, 
    sex: &#39;f&#39;, 
    id: &#39;2849245&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpeg&#39;, 
    des: &#39;你没有见过陌生的脸&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;348515&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpeg&#39;, 
    des: &#39;瓜皮刘&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;478454&#39;
  }
]
ログイン後にコピー

プログラミング関連の知識について詳しくは、

プログラミング入門

をご覧ください。 !

以上がVue で計算プロパティを使用する方法を 1 つの記事で学習しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

VueでWatchの使用方法 VueでWatchの使用方法 Apr 07, 2025 pm 11:36 PM

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

Vue Multi-Page開発とはどういう意味ですか? Vue Multi-Page開発とはどういう意味ですか? Apr 07, 2025 pm 11:57 PM

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

Vueによる前のページに戻る方法 Vueによる前のページに戻る方法 Apr 07, 2025 pm 11:30 PM

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

React vs. Vue:Netflixはどのフレームワークを使用していますか? React vs. Vue:Netflixはどのフレームワークを使用していますか? Apr 14, 2025 am 12:19 AM

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

vue.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

VUEトラバーサルの使用方法 VUEトラバーサルの使用方法 Apr 07, 2025 pm 11:48 PM

Vue.jsには配列とオブジェクトを通過するには3つの一般的な方法があります。V-Forディレクティブは、各要素をトラバースしてテンプレートをレンダリングするために使用されます。 V-BindディレクティブをV-Forで使用して、各要素の属性値を動的に設定できます。 .mapメソッドは、配列要素を新しい配列に変換できます。

See all articles