vue3的reactive賦值問題解決
問題
vue3中直接對reactive聲明的變量本身進行賦值是無效的。
篩選表單重置功能
// 數(shù)據結構 let filterForm = reactive({ createDate: null, q: null })
起初我的做法是直接給filterForm變量賦值。
function reset() { filterForm = { createDate: null, q: null } }
寫完之后發(fā)現(xiàn)無效,便改成了單個數(shù)據置空,此時生效了。
function reset() { filterForm.createDate = null filterForm.q = null }
彈窗數(shù)據回顯
const props = defineProps({ visible: { type: Boolean, default: false }, data: { type: Object, default: {} } }) let visible = ref(false) let modalData = reactive({})
我的邏輯:監(jiān)聽visible變量,如果彈窗顯示,則將數(shù)據回顯。
我的做法是:把props.data結構賦值給modalData變量,結果沒有生效,我用vue插件查看,插件顯示modalData變量是一個空對象。
用console.log打印,發(fā)現(xiàn)數(shù)據是有值的。
watch{ () => props.visible, (val) => { if(val) { modalData = { ...props.data } } visible = val } }
查了下資料,發(fā)現(xiàn)直接給reactive聲明的變量本身賦值是沒有效果的。
于是我便給modalData里面又嵌套了一層data。
let modalData = reactive({ data: {} }) watch{ () => props.visible, (val) => { if(val) { modalData.data = { ...props.data } } visible = val } }
解決方案
單個賦值
let formData = reactive({ updateDate: null }) formData.updateDate = '2023-7-10' function reset() { formData.updateDate = null }
多嵌套一層
const props = defineProps({ data:{ type: Object, default: {} } }) const modalData = reactive({ data:{} }) modalData.data = { ...props.data }
補充
在查閱資源時,發(fā)現(xiàn)reavtive聲明的數(shù)組變量,賦值時也同樣有問題。
如果需要清空數(shù)組,不能直接賦值一個空數(shù)組,而是要將數(shù)組長度設置為 0。
let arr = reactive([]) // 錯誤寫法 arr = [] // 正確寫法 arr.length = 0
到此這篇關于vue3的reactive賦值問題解決的文章就介紹到這了,更多相關vue3 reactive賦值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
策略模式實現(xiàn) Vue 動態(tài)表單驗證的方法
策略模式(Strategy Pattern)又稱政策模式,其定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。封裝的策略算法一般是獨立的,策略模式根據輸入來調整采用哪個算法。這篇文章主要介紹了策略模式實現(xiàn) Vue 動態(tài)表單驗證,需要的朋友可以參考下2019-09-09如何使用 vxe-table 實現(xiàn)左邊是樹右邊是表格聯(lián)動功能
使用 vxe-table 來實現(xiàn)左邊是樹,右邊是表格聯(lián)動功能,當需要實現(xiàn)左右兩側聯(lián)動時,表格 vxe-grid 配合分割模板 vxe-split 就很容易實現(xiàn)了,下面通過實例代碼給大家介紹使用 vxe-table 來實現(xiàn)左邊是樹,右邊是表格聯(lián)動功能,感興趣的朋友一起看看吧2025-03-03elementui使用el-upload組件實現(xiàn)自定義上傳的詳細步驟
upload上傳是前端開發(fā)很常用的一個功能,在Vue開發(fā)中常用的Element組件庫也提供了非常好用的upload組件,這篇文章主要給大家介紹了關于elementui使用el-upload組件實現(xiàn)自定義上傳的詳細步驟,需要的朋友可以參考下2023-12-12在elementui中Notification組件添加點擊事件實例
這篇文章主要介紹了在elementui中Notification組件添加點擊事件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11