検索
ホームページウェブフロントエンドVue.jsvue の計算プロパティの詳細については、こちらをご覧ください。

次の Vue.js チュートリアル 列では、vue で計算されるプロパティについて説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。

vue の計算プロパティの詳細については、こちらをご覧ください。

#1. 計算属性とは何ですか

テンプレート内の式は非常に便利ですが、元々は使用するために設計されています。 簡単な操作。テンプレートにロジックを入れすぎると、テンプレートが太くなり、保守が困難になる可能性があります。例:

<p>
  {{ message.split('').reverse().join('') }}</p>

ここの式には 3 つの操作が含まれていますが、これはあまり明確ではないため、複雑なロジックに遭遇した場合は、それを処理するために計算される Vue の特別な計算属性を使用する必要があります。

2. 計算属性の使用法

演算、関数呼び出しなどを含むさまざまな複雑なロジックを計算属性で完了できます。最終的なリターンは 1 つの結果で十分です。

計算されたプロパティを使用して上記の例を書き直してみましょう

<p>
  </p><p>Original message: "{{ message }}"</p>
  <p>Computed reversed message: "{{ reversedMessage }}"</p>  //我们把复杂处理放在了计算属性里面了
var vm = new Vue({
    el: '#example',
    data: {
        message: 'Hello'
    },
    computed: {
        reversedMessage: function () {            // `this` 指向 vm 实例
            return this.message.split('').reverse().join('')
        }
    }
});

結果:

元のメッセージ: "Hello"

計算された反転メッセージ: "olleH "

上記の例の単純な使用法に加えて、計算されたプロパティは複数の Vue インスタンスのデータに依存することもできます。 データのいずれかが変更される限り、計算されたプロパティはが再実行されると、ビューも更新されます。

    <p>
        <button>补充货物1</button>
        </p><p>总价为:{{price}}</p>
    
var app = new Vue({        
       el: '#app', 
   data: {
       package1: {
           count: 5,
           price: 5
       },
       package2: {
           count: 10,
           price: 10
       }
    },
    computed: {
     price: function(){         return this.package1.count*this.package1.price+this.package2.count*this.package2.price  //总价随着货物或价格的改变会重新计算
     }
    },
    methods: {   //对象的方法
        add: function(){            this.package1.count++
        }
    }
});

計算プロパティについては、見落とされがちな非常に実用的なヒントが 2 つあります: まず、計算プロパティは他の計算プロパティに依存する可能性があります。第 2 に、計算プロパティは現在の Vue のデータのみに依存できるわけではありません。インスタンスだけでなく、他の インスタンス , のデータにも依存します。例:

    <p></p>
    <p>{{ reverseText}}</p>
var app1 = new Vue({
   el: '#app1',
 data: {
      text: 'computed'
    }
});var app2 = new Vue({
    el: '#app2',
    computed: {
        reverseText: function(){
        return app1.text.split('').reverse().join('');  //使用app1的数据进行计算        }
    }
});

各計算プロパティにはゲッターとセッターが含まれます。上記の 2 つの例は、デフォルトの使用法です。計算されたプロパティ。getter を使用して読み取るだけです。

必要に応じて、セッター関数を提供することもできます。通常のデータを変更するのと同じように、計算されたプロパティの値を手動で変更すると、セッター関数がトリガーされて、次のようなカスタム操作が実行されます。 :

var vm = new Vue({
    el: '#demo',
    data: {
        firstName: 'Foo',
        lastName: 'Bar'
    },
    computed: {
        fullName: {            // getter
            get: function () {                return this.firstName + ' ' + this.lastName
            },            // setter
            set: function (newValue) {                var names = newValue.split(' ');                this.firstName = names[0];                this.lastName = names[names.length - 1];
            }
        }
    }
});//现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

ほとんどの場合、計算されたプロパティを読み取るためにデフォルトのゲッター メソッドのみを使用します。セッターはビジネスではほとんど使用されないため、計算されたプロパティを宣言するときは、デフォルトの書き込みメソッドを直接使用できます。 getter と setter の両方を宣言する必要はありません。

3. 計算属性キャッシュ

上記の例では、計算プロパティを使用することに加えて、式の中で次のようなメソッドを呼び出すことによっても同じ効果を実現できます。 :

<p>{{reverseTitle()}}</p>
// 在组件中methods: {
  reverseTitle: function () {    return this.title.split('').reverse().join('')
  }
}

同じ関数を計算されたプロパティの代わりにメソッドとして定義することもでき、どちらの方法でも最終結果はまったく同じになります。 1 つだけが reverseTitle() を使用して値を取得し、もう 1 つが reverseTitle を使用して値を取得します。

ただし、計算されたプロパティは 依存関係に基づいてキャッシュされるという点が異なります。 計算されたプロパティは、関連する依存関係が変更された場合にのみ再評価されます。

これは、タイトルが変更されていない限り、reverseTitle 計算プロパティに複数回アクセスすると、関数を再度実行することなく、前の計算結果がすぐに返されることを意味します。

小さな例:

        <p>{{reverseTitle}}</p>
        <p>{{reverseTitle1()}}</p>
        <button>补充货物1</button>
        <p>总价为:{{price}}</p>
    computed: {
      reverseTitle: function(){          return this.title.split('').reverse().join('')  //而使用计算属性,只要title没变,页面渲染是不会重新进这里来计算的,而是使用了缓存。
      },
     price: function(){         return this.package1.count*this.package1.price+this.package2.count*this.package2.price
     }
    },
    methods: {   //对象的方法
        add: function(){            this.package1.count++
        },
        reverseTitle1: function(){            return this.title.split('').reverse().join('')  //点击补充货物,也会进这个方法,再次计算。不是刷新,而是只要页面渲染,就会进方法里重新计算。
        }
    },
対照的に、再レンダリングがトリガーされるたびに、呼び出しメソッドは

常に再び機能します。

なぜキャッシュが必要なのでしょうか?巨大な配列を走査して多くの計算を行う必要がある、計算コストの高いプロパティ

A があるとします。その場合、A に依存する他の計算プロパティがある可能性があります。

キャッシュがない場合、必然的に

A のゲッターを複数回実行することになります。キャッシュしたくない場合は、代わりにメソッドを使用してください。

関連する推奨事項:


2020 フロントエンド vue インタビューの質問の概要 (回答付き)

vue チュートリアル推奨事項: 2020 年最新の vue.js ビデオ チュートリアル 5 選

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

プログラミング教育をご覧ください。 !

以上がvue の計算プロパティの詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Vue.js vs. React:ユースケースとアプリケーションVue.js vs. React:ユースケースとアプリケーションApr 29, 2025 am 12:36 AM

VUE.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模なプロジェクトや複雑なアプリケーションシナリオに適しています。 1)Vue.jsは使いやすく、迅速なプロトタイピングや小規模アプリケーションに適しています。 2)Reactは、複雑な州の管理とパフォーマンスの最適化を処理する上でより多くの利点があり、大規模なプロジェクトに適しています。

Vue.js vs. React:パフォーマンスと効率の比較Vue.js vs. React:パフォーマンスと効率の比較Apr 28, 2025 am 12:12 AM

Vue.jsとReactにはそれぞれ独自の利点があります。Vue.jsは小さなアプリケーションと迅速な発展に適していますが、Reactは大規模なアプリケーションと複雑な国家管理に適しています。 1.Vue.jsは、小さなアプリケーションに適したレスポンシブシステムを通じて自動更新を実現します。 2.反応は、大規模で複雑なアプリケーションに適した仮想DOMおよびDIFFアルゴリズムを使用します。フレームワークを選択するときは、プロジェクトの要件とチームテクノロジースタックを検討する必要があります。

Vue.js vs. React:コミュニティ、エコシステム、およびサポートVue.js vs. React:コミュニティ、エコシステム、およびサポートApr 27, 2025 am 12:24 AM

Vue.jsとReactにはそれぞれ独自の利点があり、選択はプロジェクトの要件とチームテクノロジースタックに基づいている必要があります。 1。Vue.jsはコミュニティに優しいものであり、豊富な学習リソースを提供しており、エコシステムには公式チームとコミュニティによってサポートされているVuerouterなどの公式ツールが含まれています。 2. Reactコミュニティは、強力なエコシステムを備えたエンタープライズアプリケーションに偏っており、Facebookとそのコミュニティが提供するサポートを頻繁に更新しています。

React and Netflix:関係を探るReact and Netflix:関係を探るApr 26, 2025 am 12:11 AM

NetflixはReactを使用してユーザーエクスペリエンスを強化します。 1)Reactのコンポーネント機能は、Netflixが複雑なUIを管理可能なモジュールに分割するのに役立ちます。 2)Virtual DomはUIの更新を最適化し、パフォーマンスを向上させます。 3)ReduxとGraphQLを組み合わせて、Netflixはアプリケーションのステータスとデータフローを効率的に管理します。

vue.js vs.バックエンドフレームワーク:区別を明確にしますvue.js vs.バックエンドフレームワーク:区別を明確にしますApr 25, 2025 am 12:05 AM

Vue.jsはフロントエンドフレームワークであり、バックエンドフレームワークはサーバー側のロジックを処理するために使用されます。 1)VUE.JSは、ユーザーインターフェイスの構築に焦点を当て、コンポーネントおよびレスポンシブデータバインディングを介して開発を簡素化します。 2)ExpressやDjangoなどのバックエンドフレームワークは、HTTPリクエスト、データベース操作、ビジネスロジックを処理し、サーバーで実行します。

vue.jsとフロントエンドスタック:接続の理解vue.jsとフロントエンドスタック:接続の理解Apr 24, 2025 am 12:19 AM

VUE.JSは、開発効率とユーザーエクスペリエンスを向上させるために、フロントエンドテクノロジースタックと密接に統合されています。 1)建設ツール:Webpackおよびロールアップと統合して、モジュール開発を実現します。 2)国家管理:VUEXと統合して、複雑なアプリケーションステータスを管理します。 3)ルーティング:Vuerouterと統合して、単一ページのアプリケーションルーティングを実現します。 4)CSSプリプロセッサ:SASSをサポートし、スタイル開発効率を改善するために少なくなります。

Netflix:React(またはその他のフレームワーク)の使用の調査Netflix:React(またはその他のフレームワーク)の使用の調査Apr 23, 2025 am 12:02 AM

Netflixは、Reactのコンポーネント設計と仮想DOMメカニズムが複雑なインターフェイスと頻繁な更新を効率的に処理できるため、ユーザーインターフェイスを構築するためにReactを選択しました。 1)コンポーネントベースの設計により、Netflixはインターフェイスを管理可能なウィジェットに分解し、開発効率とコード保守性を向上させることができます。 2)仮想DOMメカニズムは、DOM操作を最小化することにより、Netflixユーザーインターフェイスの滑らかさと高性能を保証します。

vue.jsとフロントエンド:フレームワークに深く飛び込むvue.jsとフロントエンド:フレームワークに深く飛び込むApr 22, 2025 am 12:04 AM

Vue.jsは、使いやすく強力なため、開発者に愛されています。 1)そのレスポンシブデータバインディングシステムは、ビューを自動的に更新します。 2)コンポーネントシステムは、コードの再利用性と保守性を向上させます。 3)コンピューティングプロパティとリスナーは、コードの読みやすさとパフォーマンスを向上させます。 4)Vuedevtoolsの使用とコンソールエラーのチェックは、一般的なデバッグ手法です。 5)パフォーマンスの最適化には、主要な属性、計算された属性、およびキープアライブコンポーネントの使用が含まれます。 6)ベストプラクティスには、クリアコンポーネントの命名、単一ファイルコンポーネントの使用、ライフサイクルフックの合理的な使用が含まれます。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境