Vue.jsvue前端开发那些事儿

Vue3(四)reactive vs ref(上)

2021-02-04  本文已影响0人  自然框架

reactive

我们先定义一个 reactive 然后看看到底是什么样子的

    setup() {
        const person = reactive({
          name: 'jyk',
          age: 100
        })

        console.log('reactive:', person)
        console.log('reactive-Type:', typeof person)
        console.log('reactive-call:', Object.prototype.toString.call(person))
        
        return {
          person
        }
      }

看看真面目:


001reactive结构.png

ref

我们再来看看ref的情况

    setup() {
        // 简单类型
        const string = Vue.ref('jyk')

        // 对象
        const person = Vue.ref({
          name: 'jyk',
          age: 100
        })

        console.log('ref-string:', string)
        console.log('ref-object:', person)

        return {
          person,
          string
        }
      }

打印出来看看:

对象类型:

002存放object的ref结构.png

不知道是否和你想象的一致。

简单类型:

003存放string的ref的结构.png

这个就简单多了,value里面就是我们设置的字符串。然后用其他方式实现了数据的响应性,具体怎么实现的不太清楚。

reactive和ref如何选择?

对比一下我们就会发现,ref 比 reactive 更全能,因为reactive能做的事情,ref 都能做,因为 ref 的 value 可以是Proxy。
而且ref.value 可以直接整体赋值,这个在一些情况下还是非常方便的。

ref唯一麻烦的就是,用的时候要“.value”,这个有点别扭。

另外还有一个隐藏的小麻烦,不过一般不会遇到。

上一篇 下一篇

猜你喜欢

热点阅读