Vue中的computed函数怎么使用

其他教程   发布日期:2023年08月10日   浏览次数:631

这篇“Vue中的computed函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的computed函数怎么使用”文章吧。

1. Vue3中的computed函数

1.1. 什么是computed

  1. computed
属性是Vue3中的一个响应式计算属性,它可以根据其他响应式数据的变化而自动更新其自身的值。
  1. computed
属性可以接收一个计算函数,并在计算函数中使用其他响应式数据的值进行计算。当任何一个参与计算的响应式数据发生变化时,
  1. computed
属性会自动重新计算其值,并触发相应的依赖更新。

1.2. 如何定义computed

在Vue3中,你可以通过

  1. computed
函数来定义一个计算属性。
  1. computed
函数接收一个计算函数作为参数,并返回一个响应式的
  1. ref
对象。

下面是一个使用

  1. computed
函数形式用法的例子:
  1. import { computed, reactive, ref } from 'vue'
  2. const state = reactive({
  3. count: 0
  4. })
  5. const doubleCount = computed(() => {
  6. return state.count * 2
  7. })
  8. console.log(doubleCount.value) // 输出:0
  9. state.count = 1
  10. console.log(doubleCount.value) // 输出:2

在上面的例子中,我们使用

  1. computed
函数定义了一个计算属性
  1. doubleCount
,它的值是
  1. state.count
的两倍。我们可以通过
  1. doubleCount.value
来访问计算属性的值,并且当
  1. state.count
的值发生变化时,
  1. doubleCount
的值也会自动更新。

下面是一个使用

  1. computed
对象形式用法的例子:
  1. import { computed, reactive } from 'vue'
  2. const state = reactive({
  3. count: 0
  4. })
  5. const doubleCount = computed({
  6. get() {
  7. return state.count * 2
  8. },
  9. set(value) {
  10. state.count = value / 2
  11. }
  12. })
  13. console.log(doubleCount.value) // 输出:0
  14. doubleCount.value = 6
  15. console.log(state.count) // 输出:3
  16. console.log(doubleCount.value) // 输出:6

1.3. computed函数的使用场景

  1. computed
属性通常用于处理需要根据其他响应式数据计算得出的值的情况。下面是一些
  1. computed
属性的使用场景:

1.3.1. 过滤和排序

当我们需要根据其他响应式数据进行数据过滤和排序时,可以使用

  1. computed
属性来计算得出过滤和排序后的结果。例如:
  1. import { computed, reactive } from 'vue'
  2. const state = reactive({
  3. todos: [
  4. { id: 1, text: '学习Vue3', done: false },
  5. { id: 2, text: '学习React', done: false },
  6. { id: 3, text: '学习Angular', done: true }
  7. ],
  8. filter: 'all'
  9. })
  10. const filteredTodos = computed(() => {
  11. if (state.filter === 'all') {
  12. return state.todos
  13. } else if (state.filter === 'active') {
  14. return state.todos.filter(todo => !todo.done)
  15. } else if (state.filter === 'completed') {
  16. return state.todos.filter(todo => todo.done)
  17. }
  18. })
  19. console.log(filteredTodos.value) // 输出:[{ id: 1, text: '学习Vue3', done: false }, { id: 2, text: '学习React', done: false }, { id: 3, text: '学习Angular', done: true }]
  20. state.filter = 'active'
  21. console.log(filteredTodos.value) // 输出:[{ id: 1, text: '学习Vue3', done: false }, { id: 2, text: '学习React', done: false }]

在上面的例子中,我们使用

  1. computed
函数定义了一个计算属性
  1. filteredTodos
,它根据
  1. state.todos
  1. state.filter
的值进行过滤,并返回过滤后的结果。当
  1. state.filter
的值发生变化时,
  1. filteredTodos
的值也会自动更新。

1.3.2. 数组计算

当我们需要对一个数组进行计算时,可以使用

  1. computed
属性来计算得出数组的值。例如:
  1. import { computed, reactive } from 'vue'
  2. const state = reactive({
  3. todos: [
  4. { id: 1, text: '学习Vue3', done: false },
  5. { id: 2, text: '学习React', done: false },
  6. { id: 3, text: '学习Angular', done: true }
  7. ]
  8. })
  9. const totalTodos = computed(() => {
  10. return state.todos.length
  11. })
  12. const completedTodos = computed(() => {
  13. return state.todos.filter(todo => todo.done).length
  14. })
  15. console.log(totalTodos.value) // 输出:3
  16. console.log(completedTodos.value) // 输出:1

在上面的例子中,我们使用

  1. computed
函数定义了两个计算属性
  1. totalTodos
  1. completedTodos
,它们分别计算了
  1. state.todos
数组的总长度和已完成的数量。当
  1. state.todos
数组的值发生变化时,
  1. totalTodos
  1. completedTodos
的值也会自动更新。

2. computed函数的原理

在Vue3中,

  1. computed
属性的原理是使用了一个
  1. getter
函数和一个
  1. setter
函数来实现。当我们访问计算属性的值时,会调用
  1. getter
函数进行计算,并将计算结果缓存起来。当参与计算的响应式数据发生变化时,会触发依赖更新,并自动调用
  1. getter
函数重新计算计算属性的值。当我们修改计算属性的值时,会调用
  1. setter
函数进行更新。

以上就是Vue中的computed函数怎么使用的详细内容,更多关于Vue中的computed函数怎么使用的资料请关注九品源码其它相关文章!