账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vuejs源码关于observer部分的dep有什么作用
    49
    0

    observer类:

    constructor (value: any) {
        this.value = value
        this.dep = new Dep()
        this.vmCount = 0
        def(value, '__ob__', this)
        if (Array.isArray(value)) {
          const augment = hasProto
            ? protoAugment
            : copyAugment
          augment(value, arrayMethods, arrayKeys)
          this.observeArray(value)
        } else {
          this.walk(value)
        }
      }

    这里的dep属性有什么作用呢?
    我知道defineReactive方法会改造getter setter方法来收集依赖和通知watcher,但是这个方法里都是用的闭包里的dep来操作的,为什么还要在observer里面声明一个dep实例呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 碎情漂移ド 普通会员 1楼

      在 Vue.js 中,@ observer 是一个自定义观察者,用于记录组件的组件属性变化。这种观察者主要用于监听组件的状态变化,以便在这些变化发生时执行某些操作。以下是 @ observer 的主要作用:

      1. 属性监听@ observer 监听组件属性的变化,以便在这些变化发生时执行某些操作。例如,您可以使用它来更新视图或处理状态更改。

      javascript export default { methods: { updateStatus(value) { console.log(value); // 输出:当前状态值 } } };

      1. 数据触发@ observer 可以用于触发数据触发,例如在用户单击按钮时,触发数据更新。

      javascript export default { methods: { updateStatus() { this.$emit('status-changed'); // 触发状态改变事件 } } };

      1. 依赖关系管理@ observer 可以用于管理组件的依赖关系。例如,您可以在 data 中使用 @ observer 来监听组件的状态变化,并根据这些变化来更新依赖项。

      javascript export default { data() { return { status: 'init', dependencies: [ { name: 'dependency1', state: 'pre-init' }, { name: 'dependency2', state: 'pre-init' }, ] }; }, methods: { updateStatus(value) { this.$emit('status-changed', value); // 触发状态改变事件 } } };

      总的来说,@ observer 是 Vue.js 中一个非常有用的工具,可以帮助您更好地管理组件的状态和依赖关系。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部