ref

  • 逻辑中需要.value访问内部值

  • 模板中直接使用

import {ref} from 'vue'

const count = ref(0)
const count1 = ref(0)

function increment (event) {
  console.log(event.target)
  count1.value++   // 逻辑中需要.value访问内部值
}

<button type="button" @click="count++">count is {{ count }}</button>  // 模板中直接使用{{count}}
<button type="button" @click="increment">count1 is {{ count1 }}</button>

reactive

import {reactive} from 'vue'

const user = reactive({
    name: 'jack'
})

console.log(user.name)

ref和reactive的区别

ref和reactive都是vue3创建响应式数据的API,但设计理念和使用场景不同:

  • ref主要用于包装原始值(字符串、数字等),而reactive主要用于处理对象和数组
  • ref需要通过.value的方式访问内部值,reactive则可以直接访问属性
  • 实现原理:ref内部是用reactive包装的{value: xxx}对象,而reactive是用ES6 Proxy代理原始对象
  • 模板中,ref自动解包,无需写.value,而reactive保持原样访问

results matching ""

    No results matching ""