目次
toRaw() 関数
markRaw() function
summary
ホームページ ウェブフロントエンド Vue.js Vue 関数の比較: toRaw() と markRaw() の使用

Vue 関数の比較: toRaw() と markRaw() の使用

Apr 07, 2023 pm 08:20 PM
vue javascript

この記事は、vue 関数を学習し、vueJs の toRaw 関数と markRaw 関数を比較するのに役立ちます。

Vue 関数の比較: toRaw() と markRaw() の使用

プロジェクトでは、特別なニーズにより、レスポンシブ データを通常のプリミティブ型データに変更する必要がある場合があります。

Vueでは、通常データ型のデータをレスポンシブ型データに変更することができ、同時にレスポンシブ型データを通常型データに変更することもできます

はい 使用済みデータのパフォーマンスを向上させるため

toRaw() 関数

reactive 応答データを受信し、応答データを一般的なタイプのデータに変換し、非応答データに変換します。 -応答データはオブジェクトの復元に相当し、reactive は運用に相当しますが、ref 応答データでは機能しません。 [関連する推奨事項: vuejs ビデオ チュートリアル Web フロントエンド開発 ]

reactive によって生成されたレスポンシブ オブジェクトを通常の (オリジナルの) オブジェクトに変換します。 ) オブジェクト

toRaw() は、reactive()readonly()shallowReactive() によって返されます。または shallowReadonly()作成されたプロキシに対応する元のオブジェクト

これは、プロキシ アクセス/追跡オーバーヘッドを発生させずに一時的に読み取り、または変更をトリガーせずに書き込みを行うために使用できる特別なメソッドです。公式ドキュメントでは、元のオブジェクトへの永続的な参照を保存することは推奨されていません。

使用シナリオ: 応答オブジェクトの読み取りに使用される共通オブジェクト、この共通オブジェクトに対するすべての操作。ページは更新されません

const foo = {}
const reactiveFoo = reactive(foo)

console.log(toRaw(reactiveFoo) === foo)  // true
ログイン後にコピー

Note

オブジェクトの場合、後続の動的に追加された属性で、オブジェクト全体が外部に公開されていない場合は、テンプレートの新しい属性 変数は無効です (setup 関数フォームの場合)

markRaw() function

生データを受信し、オブジェクトにマークを付けます。レスポンシブ オブジェクトになることはありません。つまり、ロジック内でデータが変更されても、ページは更新されません。

オブジェクトをプロキシに変換されないものとしてマークし、オブジェクト自体を返します

アプリケーション シナリオ:

[1]。複雑なサードパーティ ライブラリや Vue コンポーネント オブジェクトなど、一部の値は応答するように設定しないでください。

[2]。不変のデータ ソースを使用して大きなリストをレンダリングする場合、リアクティブな変換をスキップするとパフォーマンスが向上する可能性があります

const foo = markRaw({})
console.log(isReactive(reactive(foo))) // false

// 也适用于嵌套在其他响应性对象
const bar = reactive({ foo })
console.log(isReactive(bar.foo)) // false
ログイン後にコピー

markRaw() および shallowReactive()この浅いスタイルAPIを使用すると、デフォルトの深い応答/読み取り専用変換を選択的に回避し、状態関係スペクトルに元の非プロキシ オブジェクトを埋め込むことができます

Set を入れ子にした場合マークを外した元のオブジェクトをリアクティブ オブジェクトに変換し、再度アクセスすると、プロキシ バージョンが取得されます。これは、オブジェクト ID のリスクにつながる可能性があります。

つまり、オブジェクト ID 操作の依存関係を実行しますが、元のバージョンの両方を使用します。および同じオブジェクトのプロキシ バージョン

const foo = markRaw({
  nested: {}
})

const bar = reactive({
  // 尽管 `foo` 被标记为了原始对象,但 foo.nested 却没有
  nested: foo.nested
})

console.log(foo.nested === bar.nested) // false
ログイン後にコピー

summary

ref()andreactive() 非応答型データを次のように変換します。応答データ、toRaw() および markRaw() は応答データの復元と同等であり、応答データを非応答データ

および ## に変換します。 #toRaw は、応答性の高いオブジェクト タイプのデータに対してのみ機能します。応答性の高いデータを非応答性のデータに変換する必要がある場合は、純粋なデータにのみ使用されます。ページの更新を行わずに、レンダリングで toRaw を使用できます。または markRaw()

を使用すると、多くの場合、データのパフォーマンスが向上します

(学習ビデオの共有 :

vuejs 入門チュートリアル 基本プログラミング ビデオ)

以上がVue 関数の比較: toRaw() と markRaw() の使用の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

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

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でBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

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

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

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

Vueはマーキー/テキストスクロール効果を実現します Vueはマーキー/テキストスクロール効果を実現します Apr 07, 2025 pm 10:51 PM

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを< div>をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

Vueのバージョンを照会する方法 Vueのバージョンを照会する方法 Apr 07, 2025 pm 11:24 PM

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 < script>でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

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

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

See all articles