- 從定義數據角度對比:
- ref用來定義:基本類型數據。
- reactive用來定義:對象(或數組)類型數據。
- 備注:ref也可以用來定義對象(或數組)類型數據, 它內部會自動通過
reactive
轉為代理對象。
- 從原理角度對比:
- ref通過
Object.defineProperty()
的get
與set
來實現響應式(數據劫持)。 - reactive通過使用Proxy來實現響應式(數據劫持), 并通過Reflect操作源對象內部的數據。
- ref通過
- 從使用角度對比:
- ref定義的數據:操作數據需要
.value
,讀取數據時模板中直接讀取不需要.value
。 - reactive定義的數據:操作數據與讀取數據:均不需要
.value
。
- ref定義的數據:操作數據需要
一般來說,會把組件里面用到的數據封裝到對象里給 reactive 加工成響應式對象(代理對象),這樣讀取或修改的時候就不用 .value 了