Vue 関数の比較: toRaw() と markRaw() の使用
この記事は、vue 関数を学習し、vueJs の 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









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

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

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

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

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

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

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