vue3 reactive定義的引用類型直接賦值導致數(shù)據失去響應式問題
reactive定義的引用類型直接賦值導致數(shù)據失去響應式
<script setup>
import {reactive,onMounted} from 'vue'
const userMenu=reactive([])
onMounted(()=>{
userMenu=[1,2,3]
})
</script>
<template>
<div>示例:{{userMenu}}</div>
</template>
<style>
</style>如上代碼,我們定義了一個userMenu的reactive數(shù)組,我們在onMounted生命周期直接給userMenu重新賦值為【1,2,3】,但是我們打開頁面顯示的仍然是之前的空數(shù)組
![]()
這是因為,reactive定義的數(shù)組或者對象,不能直接賦值修改,否則定義的數(shù)據userMenu將失去響應性。
我們可以按照如下代碼:
<script setup>
import {reactive,onMounted} from 'vue'
const userMenu=reactive({
arr:[]
})
onMounted(()=>{
userMenu.arr=[1,2,3]
})
</script>
<template>
<div>示例:{{userMenu.arr}}</div>
</template>
<style>
</style>將空數(shù)組作為對象的一個屬性,我們直接修改arr屬性為【1,2,3】,此時userMenu不會失去響應性,頁面內容也就跟著變化成【1,2,3】
![]()
注意:
vue3中reactive定義的引用類型直接賦值導致數(shù)據失去響應式,我們可以通過修改對象的屬性的形式,實現(xiàn)修改數(shù)據
vue3中reactive的理解
1.什么是reactive?
reactive是Vue3中提供實現(xiàn)響應式數(shù)據的方法.
在Vue2中響應式數(shù)據是通過defineProperty來實現(xiàn)的.
而在Vue3響應式數(shù)據是通過ES6的Proxy來實現(xiàn)的
2.reactive注意點
reactive參數(shù)必須是對象(json/arr)
如果給reactive傳遞了其他對象,默認情況下修改對象,界面不會自動更新,如果想更新,可以通過重新賦值的方式.
錯誤示范
當傳遞的是非對象時,頁面不會發(fā)生響應

正確實例

arr正確實例
傳入數(shù)組會轉成proxy對象

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue中利用pinyin-pro純前端實現(xiàn)拼音的模糊搜索功能
這篇文章主要介紹了vue中利用pinyin-pro純前端實現(xiàn)拼音的模糊搜索,實現(xiàn)思路很簡單,通過安裝配置插件編寫工具類,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-11-11
Vue利用computer解決單項數(shù)據流的問題詳解
Vue 是一個非常流行和強大的前端框架,它讓我們可以用簡潔和優(yōu)雅的方式來構建用戶界面,今天我們來分享一個 Vue 中非常經典的問題,也是一個非常實用的技巧,希望對大家有所幫助2023-07-07
Vue3?TypeScript?實現(xiàn)useRequest詳情
本文介紹了Vue3?TypeScript實現(xiàn)useRequest詳情,useRequest可能是目前社區(qū)中最強大,最接地氣的請求類?Hooks了。可以覆蓋99%的網絡請求場景,無論是讀還是寫,無論是普通請求還是分頁請求,無論是緩存還是防抖節(jié)流,通通都能支持,關于其介紹需要的小伙伴可以參考一下2022-05-05

