vue3中reactive不能直接賦值的解決方案
vue3 reactive不能直接賦值
最近比較忙,都沒什么時間學習了。
在vue3里,ref和reacitve都可以定義響應式數(shù)據(jù),但是兩者有所不同。在使用reactive定義復雜結構的響應式數(shù)據(jù)時,如果你要對其賦值,會丟失其響應性。然后賦值是我們經(jīng)常進行的操作,那么該怎么解決呢?
方法
1. 改為ref定義
const arr= ref([]) arr.value = [1, 2, 3]
2. push新增數(shù)據(jù)
const arr = reactive([]) arr.push(...[1, 2, 3])
3.再封裝一層數(shù)據(jù)(推薦!)
const state = reactive({
? arr: []
});
state.arr = [1, 2, 3]但是這樣的話在html模板里,使用數(shù)據(jù)就得state.arr
所以我們可以用解構將它return出來
但是reactive解構出來的數(shù)據(jù)會丟失響應性
所以再用torefs()方法為它們添加響應性
最終為:
const state = reactive({
? arr: []
});
state.arr = [1, 2, 3]
return{
? ...toRefs(state),
}vue3 reactive賦值不響應
看了好多方法,先都存著。
(1)多嵌套一層
setup(props) {
?? ?//a賦值的時候多套一層對象值賦到a的屬性a上
? let a=reactive({a:{id:1,name:'小明'}})
??
? Object
? function fn(){
? //改值時就可以直接給a.a賦值了
? ? a.a={id:2,name:'小黃'}
? ? console.log(a);
? ?
? }
? return {
? ? fn,a
? }
}(2)使用ref
const data= ref([])? data.value = [1, 2, 3]
(3)用obeject.assign
?let a=reactive({id:1,name:'小明'})
??
? ?function fn(){
? Object.assign(a,{id:2,name:'大明'})
? ?}以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue中常用的rules校驗規(guī)則的實現(xiàn)
在vue開發(fā)中,難免遇到各種表單校驗,本文主要介紹了Vue中常用的rules校驗規(guī)則的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-10-10
vue項目實現(xiàn)會議預約功能(包含某天的某個時間段和某月的某幾天)
這篇文章主要介紹了vue項目實現(xiàn)會議預約功能(包含某天的某個時間段和某月的某幾天),本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02

