今日は、Vue の計算プロパティについてお話ししましょう。計算プロパティの利点をよりよく理解するために、まずはケースを通して計算プロパティをゆっくり理解してみましょう。次のケースがあります。2 つの入力ボックスと span タグを定義します。span タグの内容は、2 つの入力ボックスの値です。span タグの内容は、入力ボックスの内容に応じて変化します。 補間式この効果を実現するために、まず補間表現法を使用します。 <本文> <div id="アプリ"> 姓: <input type="text" v-model=firstName> </br> </br> 名前: <input type="text" v-model=lastName></br> </br> 名前: <span>{{firstName}}{{lastName}}</span> </div> </本文> <script type="text/javascript"> 新しいVue({ el: "#app", データ: { firstName: '张', 姓: '三' }, メソッド: { } }) </スクリプト> 必要な効果を簡単に達成できることが分かりますが、ここで別の要件を追加したい場合、英語を入力するときに最初の文字を大文字にする必要があります。現時点では、次の方法のみを使用できます。 <本文> <div id="アプリ"> ファーストネーム: <input type="text" v-model=firstName> </br> </br> 姓: <input type="text" v-model=姓></br> </br> フルネーム: <span>{{firstName.replace(firstName[0],firstName[0].toUpperCase())}} {{lastName.replace(lastName[0],lastName[0].toUpperCase())}}</span> </div> </本文> <script type="text/javascript"> var str = '' 新しいVue({ el: "#app", データ: { ファーストネーム: 'ジョー', 姓: 'lili' }, メソッド: { } }) </スクリプト> 補間式から、目的の効果は得られるものの、コードが非常に長く、読みにくいことがわかります。現時点では、メソッドにメソッドを追加することで、この効果を実現できると考えられます。 方法メソッドにfullNameメソッドを追加する <本文> <div id="アプリ"> ファーストネーム: <input type="text" v-model=firstName> </br> </br> 姓: <input type="text" v-model=姓></br> </br> フルネーム: <span>{{fullName()}}</span> </div> </本文> <script type="text/javascript"> var str = '' 新しいVue({ el: "#app", データ: { ファーストネーム: 'ジョー', 姓: 'lili' }, メソッド: { フルネーム() { a = '' とします。 b = '' とします。 (this.firstName.length != 0) の場合 a = this.firstName.replace(this.firstName[0], this.firstName[0].toUpperCase()) (this.lastName.length != 0) の場合 b = this.lastName.replace(this.lastName[0], this.lastName[0].toUpperCase()) a + ' ' + b を返す } } }) </スクリプト> コードが長すぎるという問題は、メソッドを通じてうまく解決できることがわかります。しかし、別の問題に直面しています。vue のデータ属性を調べると、data 内のデータが変更される限り、ページ内でデータが使用される場所が更新されることがわかります。したがって、firstName と lastName のデータが変更されると、fullName メソッドが再度呼び出され、特定の状況下ではコード効率が低下します。さらに、methods 内のメソッドは、補間式で使用される回数だけ実行されます。上記の 2 つの方法の欠点に基づいて、計算プロパティを使用する別の方法が登場しました。 計算された一部のプロパティは、computed: 計算プロパティで定義できます。計算属性の本質は実際にはメソッドですが、使用時には属性として直接使用できます。具体的な特徴は以下のとおりです
<本文> <div id="アプリ"> ファーストネーム: <input type="text" v-model=firstName> </br> </br> 姓: <input type="text" v-model=姓></br> </br> フルネーム: <span>{{fullName}}</span></br> </br> フルネーム: <span>{{fullName}}</span></br> </br> フルネーム: <span>{{fullName}}</span> </div> </本文> <script type="text/javascript"> var str = '' 新しいVue({ el: "#app", データ: { ファーストネーム: 'ジョー', 姓: 'lili' }, 計算: { //get の機能は何ですか? fullName が読み取られると get が呼び出され、戻り値は fullName の値になります。//get はいつ呼び出されますか? 1. fullName が初めて読み取られるとき。 2. 依存データが変更された場合 fullName: { 得る() { console.log('こんにちは、computed を呼び出しました') a = '' とします。 b = '' とします。 (this.firstName.length != 0) の場合 a = this.firstName.replace(this.firstName[0], this.firstName[0].toUpperCase()) (this.lastName.length != 0) の場合 b = this.lastName.replace(this.lastName[0], this.lastName[0].toUpperCase()) a + ' ' + b を返す } } } }) </スクリプト> </html> 前に、methods 内のメソッドがページ内で n 回使用されると n 回呼び出されると言いましたが、computed 内のプロパティではこれは発生しません。上記のコードでは、ページ内で同じ計算プロパティを 3 回使用しましたが、結果は 1 回しか出力されませんでした。同様に、メソッド内で完全なメソッドを使用しましたが、結果は 3 回出力されました。つまり、メソッドは 3 回呼び出されたことになります。なぜこんなことが起きたのでしょうか?これは、computed にはキャッシュ メカニズムがありますが、methods にはキャッシュ メカニズムがないためです。コードが最初の fullName を解析すると、fullName の結果がキャッシュされます。2 番目と 3 番目の fullName が解析されると、結果がすでにキャッシュ内にあることがわかり、呼び出されません。 これで、computed の使用法について大まかに理解できたので、補足してみましょう。 computedでは、計算プロパティにsetメソッドを追加することで割り当て効果を実現できます。 <本文> <div id="アプリ"> ファーストネーム: <input type="text" v-model=firstName> </br> </br> 姓: <input type="text" v-model=姓></br> </br> フルネーム: <span>{{fullName}}</span></br> </br> </div> </本文> <script type="text/javascript"> var str = '' var アプリ = 新しい Vue({ el: "#app", データ: { ファーストネーム: 'ジョー', 姓: 'lili' }, 計算: { //get の機能は何ですか? fullName が読み取られると get が呼び出され、戻り値は fullName の値になります。//get はいつ呼び出されますか? 1. fullName が初めて読み取られるとき。 2. 依存データが変更された場合 fullName: { 得る() { console.log(これ) this.firstName + this.lastName を返す }, 設定(値) { this.firstName = val[0] this.lastName = val[1] } } } }) </スクリプト> コンソールで fullName に値を割り当てると、firstName と lastName の両方が変更されることがわかります。 計算プロパティにgetのみがありsetがない場合は、次のコードのように直接記述できます。 計算: { フルネーム(){ console.log(これ) this.firstName + this.lastName を返す } } 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: CSS3はNESゲームコンソールのサンプルコードを実装します
さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 パーレル # # https:/...
1. jsonオブジェクトをjson文字列に変換し、文字列が「{}」であるかどうかを判断します。 v...
このチュートリアルは Windows システムにのみ適用されます。インストールしたがまだインストール...
オリジナルリンクhttps://github.com/XboxYan/no…ボタンは、おそらく We...
Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...
1. オーバーフローOverflow はオーバーフロー(コンテナ)です。コンテンツがコンテナを越える...
目次1. Linuxシステムの操作レベルの概要2. 実行レベルを確認する3. 現在のシステムの動作レ...
Linux C/C++ では、スレッド レベルの操作は通常、pthread ライブラリを通じて実行さ...
前回の記事 https://www.jb51.net/article/154157.htm では、B...
目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...
この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...
ユニークな「About」ページ自分を他の人たちと差別化する素晴らしい方法は、本当にユニークな自己紹介...
リモートアクセスを有効にする次のコマンドを実行して、root ユーザーのリモート アクセス権を有効に...
目次質問: 1. リモートログイン権限を有効にする: 2. MySQLの権限を更新します。 3. テ...
インターフェイス ドメイン名を構成する際、各パブリック プラットフォームはドメイン名に対する開発者の...