HLJ 发布于
2024-05-23 13:21:32
33阅读

响应式基础 ref 和 reactive

上一篇文章:

模板语法

下一篇文章:

计算属性

声明响应式状态

  • 1、ref()
  • 2、reactive()
  • ref()响应式状态

  • 在组合式 API 中,推荐使用 ref() 函数来声明响应式状态:
import { ref } from 'vue'

const count = ref(0)
  • reactive()响应式状态

  • 还有另一种声明响应式状态的方式,即使用 reactive() API。与将内部值包装在特殊对象中的 ref 不同,reactive() 将使对象本身具有响应性:
import { reactive } from 'vue'

const state = reactive({ count: 0 })

reactive() 的局限性

  • 1、 有限的值类型:它只能用于对象类型 (对象、数组和如 Map、Set 这样的集合类型)。它不能持有如 string、number 或 boolean 这样的原始类型。
  • 2、不能替换整个对象:由于 Vue 的响应式跟踪是通过属性访问实现的,因此我们必须始终保持对响应式对象的相同引用。这意味着我们不能轻易地“替换”响应式对象,因为这样的话与第一个引用的响应性连接将丢失:
let state = reactive({ count: 0 })

// 上面的 ({ count: 0 }) 引用将不再被追踪
// (响应性连接已丢失!)
state = reactive({ count: 1 })
  • 3、对解构操作不友好:当我们将响应式对象的原始类型属性解构为本地变量时,或者将该属性传递给函数时,我们将丢失响应性连接:
const state = reactive({ count: 0 })

// 当解构时,count 已经与 state.count 断开连接
let { count } = state
// 不会影响原始的 state
count++

// 该函数接收到的是一个普通的数字
// 并且无法追踪 state.count 的变化
// 我们必须传入整个对象以保持响应性
callSomeFunction(state.count)
当前文章内容为原创转载请注明出处:http://www.good1230.com/detail/2024-05-23/640.html
最后生成于 2024-06-22 12:07:50
上一篇文章:

模板语法

下一篇文章:

计算属性

此内容有帮助 ?
0