shallowRef 関数とshallowReactive
shallowRef 関数は、基本型データのみを処理します。
shallowReactive 関数は、データの最初の層のみを処理します。
使用する場合は両方を導入する必要があります。
上記の内容がまだ理解できませんでしたか?大丈夫ですので、まずは上記の3つを覚えてから、詳しく説明してください。
前回のブログでref関数とreactive関数についてお話しましたが、データをレスポンシブデータに変換する機能で、データが変更された際にリアルタイムにページ上に表示することができ、基本データもリアルタイムにページ上に表示できます。
しかし問題があります。データをレスポンシブ データに変更すると、ref 関数を使用するかリアクティブ関数を使用するかにかかわらず、どちらも詳細な監視になります。これは何を意味しますか?これはreactiveでラップされたオブジェクトであり、レイヤーが100ある場合、つまり100の属性を連続してクリックした場合でも、最も深いデータを監視できますが、この場合には問題が発生します。
ディープ モニタリングの問題:
ref 関数とリアクティブ関数は両方ともディープ モニタリングです。
データの量が大きすぎると、非常にパフォーマンスが消費されます。
データを深く監視する必要がない場合は、shallowRef 関数とshallowReactive 関数を使用できます。 ############わかりますか?理解できなくても大丈夫、いくつかの事例を通して理解していきます。
shallowReactive 非深度モニタリングを使用する
。
ページに個人情報表示があり、名前と年齢が表示されるとします。データはboyオブジェクトに保存されており、年齢はboyオブジェクトのnews属性の下にあります。つまり、深いですが、名前は男の子のオブジェクトの下、つまり最初のレイヤーにあり、名前と年齢をそれぞれ変更して、どのような効果が得られるかを確認するための 2 つのボタンがあります。 <template>
<div>
<h2 id="姓名-name">姓名:{{name}}</h2>
<h2 id="年龄-news-age">年龄:{{news.age}}</h2>
<button @click="btn">修改name</button>
<button @click="btn2">修改age</button>
</div>
</template>
<script>
import { shallowReactive, toRefs } from "vue";
export default {
name: "App",
setup() {
const boy = shallowReactive({
name: "我是????????.",
news: {
birthday: "2012-10-14",
age: 10
}
});
const btn = () => {
boy.name = "????????.";
};
const btn2 = () => {
boy.news.age++;
};
return { ...toRefs(boy), btn, btn2 };
}
};
</script>
2 つのボタンをそれぞれクリックして、ページの変化を確認してみましょう。
#エフェクトを通して、少しまとめてみましょう:
- デフォルトでは、データの最初の層のみをリッスンできます。
- 複数のレイヤーのデータを変更する場合は、最初に最初のレイヤーのデータを変更し、次に他のレイヤーのデータを変更する必要があります。その場合にのみ、ビュー上のデータが変更されます。
- 深度以外のモニタリングにはshallowRefを使用する冒頭で述べたように、 shallowRef関数は基本型のデータしか処理できません
<template> <div> <h2 id="姓名-boy">姓名:{{boy}}</h2> <button @click="btn">修改boy</button> </div> </template> <script> import { shallowRef } from "vue"; export default { name: "App", setup() { const boy = shallowRef("我是????????."); const btn = () => { boy.value = "????????."; }; return { boy, btn }; } }; </script>ボタンをクリックしてboyの値を変更します。
上のスクリーンショットからわかるように、データは正常に変更できます。
それでは疑問が残ります: shallowRef 関数は基本型データのみを処理しますか?
<template> <div> <h2 id="姓名-boy-name">姓名:{{boy.name}}</h2> <h2 id="年龄-boy-news-age">年龄:{{boy.news.age}}</h2> <button @click="btn">修改name</button> <button @click="btn2">修改age</button> </div> </template> <script> import { shallowRef } from "vue"; export default { name: "App", setup() { const boy = shallowRef({ name: "我是????????.", news: { birthday: "2012-10-14", age: 10 } }); const btn = () => { boy.value.name = "????????."; }; const btn2 = () => { boy.value.news.age++; }; return { boy, btn, btn2 }; } }; </script>このコードでは、オブジェクトをshallowRefでラップし、ページ上に名前と年齢を表示してから、名前と年齢を変更します。ボタンをクリックして、ページの効果を確認してください。
したがって、
shallowRef 関数は基本型データ のみを処理できます。
以上がVue3でshallowRefとshallowReactiveを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

Vue.jsは、複雑なユーザーインターフェイスを構築するのに適した進歩的なJavaScriptフレームワークです。 1)そのコア概念には、レスポンシブデータ、コンポーネント、仮想DOMが含まれます。 2)実際のアプリケーションでは、TODOアプリケーションを構築し、Vuerouterを統合することで実証できます。 3)デバッグするときは、vuedevtools and Console.logを使用することをお勧めします。 4)パフォーマンスの最適化は、V-IF/V-Show、リストレンダリング最適化、コンポーネントの非同期負荷などを通じて達成できます。

Vue.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模で複雑なアプリケーションにより適しています。 1。VUE.JSのレスポンシブシステムは、依存関係追跡を介してDOMを自動的に更新し、データの変更を簡単に管理できるようにします。 2.反応は一方向のデータフローを採用し、データは親コンポーネントから子コンポーネントに流れ、明確なデータフローと簡単な抽出構造を提供します。

VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。

VUEでタグのジャンプを実装する方法には、HTMLテンプレートでAタグを使用してHREF属性を指定する方法が含まれます。 VUEルーティングのルーターリンクコンポーネントを使用します。 JavaScriptでこれを使用します。$ router.push()メソッド。パラメーターはクエリパラメーターに渡すことができ、ルートは動的ジャンプのルーターオプションで構成されています。

VUEでコンポーネントジャンプを実装するための次の方法があります。Router-Linkと&lt; router-view&gt;を使用してください。ハイパーリンクジャンプを実行し、ターゲットパスとして属性を指定するコンポーネント。 &lt; router-view&gt;を使用してください現在ルーティングされているレンダリングされているコンポーネントを表示するコンポーネント。プログラマティックナビゲーションには、router.push()およびrouter.replace()メソッドを使用します。前者は歴史を保存し、後者は記録を残さずに現在のルートに取って代わります。

VUEにDIV要素をジャンプするには、VUEルーターを使用してルーターリンクコンポーネントを追加するには、2つの方法があります。 @clickイベントリスナーを追加して、これを呼び出します。$ router.push()メソッドをジャンプします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版
便利なJavaScript開発ツール

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

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
