検索
ホームページウェブフロントエンドVue.jsVue3でshallowRefとshallowReactiveを使用する方法

Vue3でshallowRefとshallowReactiveを使用する方法

May 11, 2023 pm 11:07 PM
vue3shallowrefshallowreactive

shallowRef 関数とshallowReactive

  • shallowRef 関数は、基本型データのみを処理します。

  • shallowReactive 関数は、データの最初の層のみを処理します。

  • 使用する場合は両方を導入する必要があります。

上記の内容がまだ理解できませんでしたか?大丈夫ですので、まずは上記の3つを覚えてから、詳しく説明してください。

前回のブログでref関数とreactive関数についてお話しましたが、データをレスポンシブデータに変換する機能で、データが変更された際にリアルタイムにページ上に表示することができ、基本データもリアルタイムにページ上に表示できます。

しかし問題があります。データをレスポンシブ データに変更すると、ref 関数を使用するかリアクティブ関数を使用するかにかかわらず、どちらも詳細な監視になります。これは何を意味しますか?これはreactiveでラップされたオブジェクトであり、レイヤーが100ある場合、つまり100の属性を連続してクリックした場合でも、最も深いデータを監視できますが、この場合には問題が発生します。

ディープ モニタリングの問題:

  • ref 関数とリアクティブ関数は両方ともディープ モニタリングです。

  • データの量が大きすぎると、非常にパフォーマンスが消費されます。

  • データを深く監視する必要がない場合は、shallowRef 関数とshallowReactive 関数を使用できます。 ############わかりますか?理解できなくても大丈夫、いくつかの事例を通して理解していきます。

  • 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 つのボタンをそれぞれクリックして、ページの変化を確認してみましょう。

#エフェクトを通して、少しまとめてみましょう:

Vue3でshallowRefとshallowReactiveを使用する方法

shallowReactive はデータの最初の層のみをラップします

  • デフォルトでは、データの最初の層のみをリッスンできます。

  • 複数のレイヤーのデータを変更する場合は、最初に最初のレイヤーのデータを変更し、次に他のレイヤーのデータを変更する必要があります。その場合にのみ、ビュー上のデータが変更されます。

  • 深度以外のモニタリングにはshallowRefを使用する

    冒頭で述べたように、
  • shallowRef関数は基本型のデータしか処理できません
なぜでしょうか? ShallowRef 関数は、.value の変更を監視します。これはデータの最初の層の変更ではありません。したがって、shallowRef で作成したデータを変更したい場合は、xxx.value = XXX にする必要があります。

コードを見てください:

<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の値を変更します。

上のスクリーンショットからわかるように、データは正常に変更できます。

それでは疑問が残ります: Vue3でshallowRefとshallowReactiveを使用する方法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を使用する方法

以上がVue3でshallowRefとshallowReactiveを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
フレームワークの選択:Netflixの決定を推進するものは何ですか?フレームワークの選択:Netflixの決定を推進するものは何ですか?Apr 13, 2025 am 12:05 AM

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

Netflixのフロントエンドの反応、Vue、および未来Netflixのフロントエンドの反応、Vue、および未来Apr 12, 2025 am 12:12 AM

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

フロントエンドのvue.js:実際のアプリケーションと例フロントエンドのvue.js:実際のアプリケーションと例Apr 11, 2025 am 12:12 AM

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

Vue.jsとReact:重要な違​​いを理解するVue.jsとReact:重要な違​​いを理解するApr 10, 2025 am 09:26 AM

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

Vue.js vs. React:プロジェクト固有の考慮事項Vue.js vs. React:プロジェクト固有の考慮事項Apr 09, 2025 am 12:01 AM

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

Vueにタグをジャンプする方法Vueにタグをジャンプする方法Apr 08, 2025 am 09:24 AM

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

VUEのコンポーネントジャンプを実装する方法VUEのコンポーネントジャンプを実装する方法Apr 08, 2025 am 09:21 AM

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

VueのDivにジャンプする方法VueのDivにジャンプする方法Apr 08, 2025 am 09:18 AM

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

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

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

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

MantisBT

MantisBT

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