一般情況下vue3有兩種定義模板數(shù)據(jù)的方式
ref和reactive,但是何時使用ref扣唱?何時使用reactive藕坯?
總結(jié):
當(dāng)變量為Object時適合使用reactive來定義
當(dāng)變量為數(shù)組的適合,根據(jù)情況而定噪沙,如果數(shù)組內(nèi)容賦值后不變動炼彪,很適合用reactive,比如從接口請求到的下拉選項正歼,字典
如果數(shù)組內(nèi)容會根據(jù)某些情況變動辐马,就適合用ref,比如分頁表格局义,當(dāng)然喜爷,用reactive也可以膜楷,但是會想要修改渲染后的數(shù)據(jù)稍顯麻煩
其他如數(shù)字,字符串贞奋,boolean等要用ref
如下:
let reactiveArray: any = reactive([])
let reaciveObject: any = reactive({})
setTimeout(() => {
// 想要修改reactive的數(shù)組,需要用push+展開運算
// reactiveArray.push(...[{ a: 1, b: 2 }])
// 像這種直接賦值穷绵,是無法將數(shù)據(jù)渲染到頁面的轿塔,打印出來還是 []
// reactiveArray = [{ a: 1, b: 2 }]
// 如果reactive是對象,可以直接賦值一個字段仲墨,并且同步更新勾缭,有點像 $set(object, 'a', 1)
reaciveObject.a = 1
}, 1000)
那么我不想用ref,覺得每次賦值value很奇怪(其實沒什么目养,習(xí)慣就好)
xxx.value = [x, x, x]
怎么辦
// 如果用reactive要寫兩行俩由,先清除,再push癌蚁,好像更麻煩了
reactiveArray.length = 0
reactiveArray.push(...[{ a: 3, b: 4 }])