vue3 ref は応答変数の構築に失敗します
問題の説明
ref を使用して Vue3 で応答変数を宣言し、関数を使用して値を変更しますが、値を変更できませんResponsely
<template> <p>{{userName}}</p> <button @click='change()'>change</button> </template> <script> //引入定义响应式数据的函数 import {reactive} from 'vue'; import {ref} from "@vue/reactivity"; //!!!!!注意,这里有个坑,ref必须是引用自vue,而非@vue/reactivity export default { name: 'App', //为Vue3的新特性提供统一入口,代码都会在这个函数中添加 //在beforecreated之前进行,因此无法访问this,亦即无法访问data和method setup(){ //定义响应式数据:数据变化,模板中渲染会自动刷新 // const obj=reactive({ // userName:'jack', // }); //只定义一个变量,可以使用ref将变量定义为响应式 let userName=ref('jack') console.log(userName); const change=()=> { userName.value='rose' //注意修改的是ref对象的value属性,但是在template中使用的时候不需要再加value console.log(userName); } return {userName,change} }, } </script>
解決策
参照が
import {ref} from "@vue/reactivity"
の場合、応答がありませんが、## に変更するだけで済みます。 #
import {ref} from "vue"vue3 レスポンシブ API ref と reactive データの応答性を実現するために ref 関数と reactive 関数が使用されることがわかっています。しかし、開発においてrefとreactiveのどちらを選択すればよいのでしょうか? ref と reactive の違いについて話しましょう。 レビューVue3 バージョンより前は、応答データはデータ関数で定義されていました
<template> <h2 id="nbsp-title-nbsp">{{ title }}</h2> </template> <script> export default { data() { return { title: "Hello, Vue!" }; } }; </script>Vue2 はデータ内のすべてのプロパティを走査し、Object.defineProperty を使用して各プロパティを変換しますgetter/setter に変換します。getter は依存関係の収集に使用され、setter は更新イベントの通知と公開の実行に使用されます。 Vue2 は、サブスクリプション発行モデルの仲介者としてプロパティごとに Dep オブジェクトを作成し、依存関係を収集します。 Vue はこれらの依存関係を追跡し、アクセスおよび変更されたときに変更を通知します。 Vue3Vue3 では、応答性の高いデータを作成するために ref と reactive が導入されています。
<template> <h2 id="nbsp-title-nbsp">{{ title }}</h2> <h3 id="nbsp-data-author-nbsp">{{ data.author }}</h3> <button @click=""changeTitle>修改title</button> </template> <script> import { ref, reactive, toRefs } from "vue"; export default { setup() { const title = ref("Hello, Vue 3!"); // 修改 function changeTitle(){ title.value == "Hello, Vue3!" } const data = reactive({ author: "青年码农", age: "18" }); return { title, data, changeTitle }; } }; </script>おそらく、上記のコードとの違いがわかるでしょう。 ref の機能は、プリミティブ データ型をレスポンシブ データに変換することであり、String、Number、BigInt、Boolean、Symbol、Unknown、Null の 7 つのプリミティブ データ型があります。しかし、奇妙なトリックがあります。それは、ref がオブジェクトになることもできるということです。それについては後で話します。リアクティブの機能は、オブジェクトを応答オブジェクトに変換することです。
ref:
ref の機能は、プリミティブ データ型をデータ型に変換することです。応答付き 式属性のデータ型。ref はパラメータを受け取り、value 属性を持つオブジェクトでラップして返します。この属性は、応答変数の値にアクセスしたり変更したりするために使用できます。たとえば、上記のコードでは次のように、count.value を使用して値を変更します:const title = ref("Hello, Vue 3!");
title.value = "Hello, Vue3!"上で述べたように、ref はオブジェクト型も受け入れることができます
const data = ref({ author: "青年码农", age: "18" });これも可能ですが、次の場合は少し面倒になります。値の割り当て。
data.value.author = "nmgwap";ref リアクティブ原則は Object.defineProperty() に依存しているため、オブジェクトの場合はリアクティブを使用することをお勧めします。
reactive:
reactive の反応性を返します。オブジェクトのコピー。参照の応答性を維持しながら、すべての深い参照を解凍します。一般に、オブジェクトまたは配列の応答性を実装するためにこれを使用します。変更と通常のオブジェクトに違いはありません。ビューはリアルタイムで更新されますconst data = reactive({ author: "青年码农", age: "18" });
data.author = "nmgwap"
注:
refは元のデータ型とリアクティブ用です。どちらの API も、一般的な JavaScript データ型にリアクティブ性を与えるオブジェクトに使用されます。以上がVue3 ref で応答性の高い変数を構築できない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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()メソッドをジャンプします。

VUEにデータを渡す主な方法は2つあります。PROPS:一方向データバインディング、親コンポーネントから子コンポーネントにデータを渡します。イベント:イベントとカスタムイベントを使用してコンポーネント間でデータを渡します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
