当前位置:首页 > VUE

vue get set 实现

2026-02-17 18:38:55VUE

Vue 中使用 get/set 实现响应式数据

在 Vue 中,可以通过计算属性(computed)或直接使用 Object.defineProperty 实现 getter/setter,以下是两种常见方法:

vue get set 实现

计算属性实现 get/set

export default {
  data() {
    return {
      internalValue: ''
    }
  },
  computed: {
    value: {
      get() {
        return this.internalValue
      },
      set(newValue) {
        this.internalValue = newValue
        console.log('值被修改为:', newValue)
      }
    }
  }
}

使用 Object.defineProperty

export default {
  data() {
    const obj = {}
    Object.defineProperty(obj, 'value', {
      get() {
        return this._value
      },
      set(newValue) {
        this._value = newValue
        console.log('值被修改为:', newValue)
      }
    })
    return {
      obj
    }
  }
}

Vue 3 的 refreactive

Vue 3 的 Composition API 中,refreactive 自动提供 getter/setter:

vue get set 实现

import { ref } from 'vue'

const count = ref(0)
console.log(count.value) // get
count.value = 1 // set

自定义响应式对象

通过 reactive 创建的对象会自动转换属性为 getter/setter:

import { reactive } from 'vue'

const state = reactive({
  count: 0
})
console.log(state.count) // get
state.count++ // set

注意事项:

  • 计算属性的 setter 需要依赖一个 data 属性存储实际值
  • Vue 3 的 ref 在模板中自动解包,无需 .value
  • 直接修改数组或对象属性时,确保使用响应式方法(如 push 而非直接赋值)

标签: vueget
分享给朋友:

相关文章

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生…

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在模…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue实现动态

vue实现动态

Vue 实现动态路由的方法 在 Vue 中实现动态路由通常涉及以下几个关键步骤: 使用 Vue Router 的动态路由匹配 通过 Vue Router 的 :param 语法可以实现动态路由匹配…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue 实现滑动

vue 实现滑动

Vue 实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的<transition>组件结合CSS过渡或动画实现滑动效果…