對(duì)Vue3中reactive的深入理解
Vue3 reactive的理解
1.什么是reactive?
- reactive是Vue3中提供實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)的方法.
- 在Vue2中響應(yīng)式數(shù)據(jù)是通過defineProperty來實(shí)現(xiàn)的.
- 而在Vue3響應(yīng)式數(shù)據(jù)是通過ES6的Proxy來實(shí)現(xiàn)的
2.reactive注意點(diǎn)
- reactive參數(shù)必須是對(duì)象(json/arr)
- 如果給reactive傳遞了其他對(duì)象,默認(rèn)情況下修改對(duì)象,界面不會(huì)自動(dòng)更新,如果想更新,可以通過重新賦值的方式.
錯(cuò)誤示范
- 當(dāng)傳遞的是非對(duì)象時(shí),頁面不會(huì)發(fā)生響應(yīng)

正確實(shí)例

arr正確實(shí)例
- 傳入數(shù)組會(huì)轉(zhuǎn)成proxy對(duì)象

Vue3筆記 reactive函數(shù)
- 作用:定義一個(gè)對(duì)象類型的響應(yīng)式數(shù)據(jù)(基本類型不要用它,要用ref函數(shù))
- 語法:const 代理對(duì)象= reactive(源對(duì)象)接收一個(gè)對(duì)象(或數(shù)組),返回一個(gè)代理對(duì)象(Proxy的實(shí)例對(duì)象,簡稱proxy對(duì)象)
reactive定義的響應(yīng)式數(shù)據(jù)是“深層次的”。
內(nèi)部基于 ES6 的 Proxy 實(shí)現(xiàn),通過代理對(duì)象操作源對(duì)象內(nèi)部數(shù)據(jù)進(jìn)行操作。
<template>
? <img alt="Vue logo" src="./assets/logo.png" />
? <h1>一個(gè)人的信息</h1>
? <h1>年齡:{{ p.age }}</h1>
? <h1>姓名:{{ p.name }}</h1>
? <h1>工作種類: {{ p.job.type }}</h1>
? <h1>工作薪水: {{ p.job.salary }}</h1>
? <h1>愛好: {{ hobby }}</h1>
? <h1>測(cè)試的數(shù)據(jù): {{ p.a.b.c }}</h1>
? <button @click="changeInfo">修改人的信息</button>
</template><script>
import HelloWorld from "./components/HelloWorld.vue";
import { ref, reactive } from "vue";
export default {
? name: "App",
? components: {
? ? HelloWorld,
? },
? setup() {
? ? let hobby = reactive(["抽煙", "喝酒", "打麻將"]);
? ? // 數(shù)據(jù)
? ? let p = reactive({
? ? ? name: "張三",
? ? ? age: 19,
? ? ? job: {
? ? ? ? type: "前端工程師",
? ? ? ? salary: "20k",
? ? ? },
? ? ? a: {
? ? ? ? b: {
? ? ? ? ? c: 666666,
? ? ? ? },
? ? ? },
? ? ? hobby: ["抽煙", "喝酒", "打麻將"],
? ? });
? ? // 方法
? ? function changeInfo() {
? ? ? console.log(p.job);
? ? ? p.name = "李四";
? ? ? p.age = 119;
? ? ? p.job.salary = "69k";
? ? ? p.job.type = "算法工程師";
? ? ? p.hobby[0] = "學(xué)習(xí)";
? ? ? hobby[0] = "學(xué)習(xí)算法";
? ? }
? ? return {
? ? ? p,
? ? ? hobby,
? ? ? changeInfo,
? ? };
? },
};
</script>總結(jié)一下:
- reactive主要是用來操作對(duì)象或數(shù)組,定義為響應(yīng)式數(shù)據(jù)
- 增刪改查都可以操作。
- 內(nèi)部是通過Proxy代理的形式
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中this.$refs有值,但無法獲取ref的值問題及解決
這篇文章主要介紹了vue中this.$refs有值,但無法獲取ref的值問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue項(xiàng)目創(chuàng)建步驟及路由router
本文主要給大家分享了vue項(xiàng)目的創(chuàng)建步驟以及vue路由router的相關(guān)知識(shí)點(diǎn),非常的實(shí)用,有需要的小伙伴可以來參考下2020-01-01
vue中的事件加判斷條件如何進(jìn)行選擇性點(diǎn)擊
這篇文章主要介紹了vue中的事件加判斷條件如何進(jìn)行選擇性點(diǎn)擊方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue checkbox 全選 數(shù)據(jù)的綁定及獲取和計(jì)算方法
下面小編就為大家分享一篇vue checkbox 全選 數(shù)據(jù)的綁定及獲取和計(jì)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02
vue中使用gantt-elastic實(shí)現(xiàn)可拖拽甘特圖的示例代碼
這篇文章主要介紹了vue中使用gantt-elastic實(shí)現(xiàn)可拖拽甘特圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
基于vue實(shí)現(xiàn)一個(gè)禪道主頁拖拽效果
最近在做一個(gè)基于vue的后臺(tái)管理項(xiàng)目。接下來通過本文給大家分析一款基于vue做一個(gè)禪道主頁拖拽效果,需要的朋友可以參考下2019-05-05

