計算されたプロパティ
データ内の一部のデータは、テンプレート内の補間構文を通じて直接表示できることはわかっていますが、場合によっては、データを表示する前にデータに対して何らかの変換を実行する必要がある場合があります。複数のデータを結合して表示する必要がある
テンプレートで式を使用すると非常に便利ですが、元々は単純な操作用に設計されているため、テンプレートにロジックを入れすぎるとテンプレートが重くなり、メンテナンスが困難になります複数の場所で使用される場合、重複コードが大量に発生するため、ビジネス ロジックと UI インターフェイスを分離したいと考えています。ロジックをメソッドに抽出することも 1 つの方法ですが、このアプローチは次の欠点があります。
- すべてのデータ使用プロセスがメソッド呼び出しになります
- 複数の取得データを実行するにはメソッドを複数回呼び出す必要がありますキャッシュなしの対応するロジック
- ##実際、 応答性の高いデータを含む複雑なロジックの場合は、計算されたプロパティを使用する必要があります
<div id="app"> <!-- 计算属性的使用和普通状态的使用方式是一致的 --> <h3 id="nbsp-fullname-nbsp">{{ fullname }}</h3> </div> <script> Vue.createApp({ data() { return { firstname: 'Klaus', lastname: 'Wang' } }, computed: { fullname() { return this.firstname + ' ' + this.lastname } } }).mount('#app')
キャッシュ
計算されたプロパティは、その依存関係に基づいてキャッシュされます。データが変更されない場合、計算されたプロパティは再計算する必要はありません。ただし、依存データが変更された場合、計算されたプロパティは引き続き再計算されます。使用すると、#そしてインターフェイスは最新の計算されたプロパティ値を使用して再レンダリングされます
#ゲッターとセッター計算されたプロパティ ほとんどの場合、必要なゲッター メソッドは 1 つだけです。そのため、計算されたプロパティを関数として直接記述します。<div id="app"> <!-- 计算属性的使用和普通状态的使用方式是一致的 --> <h3 id="nbsp-fullname-nbsp">{{ fullname }}</h3> <button @click="change">change</button> </div> <script> Vue.createApp({ data() { return { firstname: 'Klaus', lastname: 'Wang' } }, methods: { change() { this.fullname = 'Alex Li' } }, computed: { // 计算属性的完整写法 fullname: { get() { return this.firstname + ' ' + this.lastname }, set(v) { this.firstname = v.split(' ')[0] this.lastname = v.split(' ')[1] } } } }).mount('#app') </script>Listener は、データによって返されるオブジェクトで定義されます。 データは、補間構文などを通じてテンプレートにバインドされます。 データが変更されたとき、テンプレートは自動的に更新され、最新のデータが表示されます。ただし、場合によっては、コード ロジックで特定のデータの変更を監視するには、この時点でリスナー ウォッチを使用する必要があります。
Vue.createApp({
data() {
return {
info: {
name: 'Klaus'
}
}
},
watch: {
// 可以使用watch监听响应式数据的改变
// 对应有两个参数
// 参数一 --- 新值
// 参数二 --- 旧值
info(newV, oldV) {
// 如果监听的值是对象,获取到的新值和旧值是对应对象的代理对象
console.log(newV, oldV)
// 代理对象 转 原生对象
// 1. 使用浅拷贝获取一个新的对象,获取的新的对象为原生对象
console.log({...newV})
// 2. 使用Vue.toRaw方法获取原生对象
console.log(Vue.toRaw(newV))
}
},
methods: {
change() {
this.info = {
name: 'Steven'
}
}
}
}).mount('#app')
設定オプション
プロパティ
deep | オンにするかどうか深い監視の場合 |
---|---|
開始後、オブジェクトが監視されている場合、オブジェクト内のいずれかの属性が変更される限り、監視コールバックがトリガーされます |
immediate | すぐに監視を開始するかどうか
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { info: { // 开启了深度监听后,当info的属性发生改变的时候,就会触发对应的watch回调 // 注意: 和直接修改info引用不同的是,如果直接修改的是对象的属性 // 那么此时newV和oldV是同一个对象的引用, 此时也就获取不到对应的旧值 handler(newV, oldV) { console.log(newV, oldV) console.log(newV === oldV) // => true }, deep: true, immediate: true } }, methods: { change() { this.info.name = 'Steven' } } }).mount('#app') その他の記述方法 |
watch: {
'info.name'(newV, oldV){
console.log(newV, oldV)
}
}
文字列の書き込み方法
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { // watch的值如果是一个字符串的时候 // 会自动以该字符串作为函数名去methods中查找对应的方法 'info.name': 'watchHandler' }, methods: { change() { this.info.name = 'Steven' }, watchHandler(newV, oldV){ console.log(newV, oldV) } } }).mount('#app')
配列の書き込み方法
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { 'info.name': [ 'watchHandler', function handle() { console.log('handler2') }, { handler() { console.log('handler3') } } ] }, methods: { change() { this.info.name = 'Steven' }, watchHandler(){ console.log('handler1') } } }).mount('#app')
$watchリーリー
以上がVue3 で計算プロパティとリスナーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

Vue.jsは、効率的で保守可能なフロントエンドアプリケーションを構築するのに適した進歩的なJavaScriptフレームワークです。その主な機能には、1。レスポンシブデータバインディング、2。コンポーネント開発、3。仮想DOM。これらの機能を通じて、VUE.JSは開発プロセスを簡素化し、アプリケーションのパフォーマンスと保守性を向上させ、最新のWeb開発で非常に人気を博しています。

Vue.jsとReactにはそれぞれ独自の利点と欠点があり、選択はプロジェクトの要件とチームの条件に依存します。 1)Vue.jsは、シンプルで使いやすいため、小さなプロジェクトや初心者に適しています。 2)Reactは、その豊富な生態系とコンポーネント設計のため、大規模なプロジェクトと複雑なUIに適しています。

Vue.jsは複数の機能を介してユーザーエクスペリエンスを改善します。1。レスポンシブシステムは、リアルタイムデータフィードバックを実現します。 2。コンポーネント開発により、コードの再利用性が向上します。 3. Vuerouterはスムーズなナビゲーションを提供します。 4.動的データの結合および遷移アニメーションは、相互作用効果を強化します。 5.エラー処理メカニズムにより、ユーザーのフィードバックが保証されます。 6.パフォーマンスの最適化とベストプラクティスは、アプリケーションのパフォーマンスを改善します。

Web開発におけるVue.jsの役割は、開発プロセスを簡素化し、効率を向上させるプログレッシブJavaScriptフレームワークとして機能することです。 1)開発者は、レスポンシブデータのバインディングとコンポーネント開発を通じてビジネスロジックに集中できるようになります。 2)VUE.JSの作業原則は、パフォーマンスを最適化するためにレスポンシブシステムと仮想DOMに依存しています。 3)実際のプロジェクトでは、VUEXを使用してグローバルな状態を管理し、データの応答性を最適化することが一般的な慣行です。

Vue.jsは、2014年にYou YuxiがリリースしたプログレッシブJavaScriptフレームワークで、ユーザーインターフェイスを構築します。その中心的な利点には、次のものが含まれます。1。レスポンシブデータバインディング、データ変更の自動更新ビュー。 2。コンポーネントの開発では、UIは独立した再利用可能なコンポーネントに分割できます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









