ref:適合簡單數據類型,淺轉換為響應數據。
例如以下:
const a=1;
const b=2;
注意:如果傳入 ref 的是一個對象,將調用?reactive?方法進行深層響應轉換。
reactive:適合復雜數據類型,深入轉換響應數據。
例如以下:
const c={
? ? a:1,
? ? b:2
}
1、是為了適應不同的寫法的人群
2、ref只可以監聽簡單數據,reactive可以監聽所有數據。
ref這種寫法簡單,但也有弊端,經過嘗試,我發現他只能監聽一些如數字、字符串、布爾之類的簡單數據而如果需要監聽如上面代碼一樣的jsonArray我們在vue2種都會使用$set來進行變更,到了vue3我們終于可以愉快的使用reactive來實現了。
3、使用方式不一樣
ref修改數據需要使用這樣count.value=xxx的形式,而reactive只需要state.reactiveField=值這樣來使用
第二點體現在template中引用時候為reactiveField,不需要state,也就是說我reactive對象里面字段是應該直接使用的
reactive在return時候需要toRefs來轉換成響應式對象
toRefs函數
他能將reactive創建的響應式對象,轉化成為普通的對象,并且這個對象上的每個節點,都是ref()類型的響應式數據。