[解決済み】Vueのメソッドと計算されたものの比較
質問
との主な違いは何ですか?
methods
と
computed
の値は、Vue.jsで?
同じように見え、交換可能です。
解決方法は?
Vueでは、計算値とメソッドは非常に異なっており、ほとんどの場合、間違いなく互換性がありません。
計算されたプロパティ
計算値のより適切な名称は コンピュ-テッドプロパティ . 実際、Vueがインスタンス化されるとき、computedプロパティはVueのプロパティに変換され、ゲッターと、時にはセッターを持つようになります。基本的に、計算された値は、それを計算するために使用される基礎的な値のいずれかが更新されるたびに自動的に更新される派生値であると考えることができます。あなたは コール はパラメータを受け取りません。データプロパティと同じように、計算されたプロパティを参照するのです。以下は、典型的な例である ドキュメント :
computed: {
// a computed getter
reversedMessage: function () {
// `this` points to the vm instance
return this.message.split('').reverse().join('')
}
}
これはDOMでこのように参照されます。
<p>Computed reversed message: "{{ reversedMessage }}"</p>
計算値は、Vue上に存在するデータを操作するために非常に有用です。データをフィルタリングしたり、変換したりしたいときは、通常、その目的のために計算値を使用します。
data:{
names: ["Bob", "Billy", "Mary", "Jane"]
},
computed:{
startsWithB(){
return this.names.filter(n => n.startsWith("B"))
}
}
<p v-for="name in startsWithB">{{name}}</p>
計算された値もキャッシュされ、値が変化していないときに再計算する必要のない値を繰り返し計算することを防ぎます(たとえば、ループ内ではそうならないかもしれないので)。
メソッド
メソッドは、Vueインスタンスにバインドされた関数に過ぎません。明示的に呼び出したときのみ評価されます。他のJavaScript関数と同様に、パラメータを受け取り、呼び出されるたびに再評価されます。メソッドは、関数が有用であるのと同じ状況で有用です。
data:{
names: ["Bob", "Billy", "Mary", "Jane"]
},
computed:{
startsWithB(){
return this.startsWithChar("B")
},
startsWithM(){
return this.startsWithChar("M")
}
},
methods:{
startsWithChar(whichChar){
return this.names.filter(n => n.startsWith(whichChar))
}
}
Vueの ドキュメント は本当によくできていて、簡単にアクセスできます。お薦めです。
関連
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] ループ内のJavaScriptクロージャ - シンプルな実用例
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] JavaScriptでドロップダウンリストの選択値を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?