Vue2与vue3的不同之一setup(),setup可以说是vue3的灵魂所在,vue3把vue2的选项式api升级为了组合式api,能够有效增加大项目代码的代码可读性,但是和vue2自动把数据变为响应式不同,vue3多了一步配置。
请大家看一个例子,我在setup中创建了一个名为name的数据,他的值为张三,另外我还配置了一个方法,它的作用是修改name,并打印‘name’的值。
当我点击时,可以看到,张三并没有发生改变,但是console中打印出的name却是李四,说明数据已经改变了,但是页面却没有发生改变。这里没有发生改变的原因如下:
因为name此时还不是响应式数据,如果是vue2中这里肯定已经实现了,但这里是vue3,且this没有了。大家可以看到我上边的代码中引入了一个叫做ref和reactive的东西,这两个其实就是让数据变为响应式的关键,官方对他们这样解释。
下面我们修改一下代码。
可以看到,这次我们的name不单纯是一个字符串而是变成了一个对象,并且页面中张三已经被改成李四了,大家请注意看我的代码,因为ref让原本的张三变成了一个对象,所以当我们想要修改name的值的时候,一定要加上.value才能正常修改。
然后,我们再说一下reactive(),其实他与ref相似,不同的地方在于,reactive只能用来让对象变成响应式,并且,因为其响应式化的本身就是对象,所以vue已经帮我们取到了其本身的值,这里我们不用写.value,但是如果用的是ref,还是需要.value。
大体上说,ref可以用来定义基本类型数据,而reactive则用来定义对象类型数据,但在实际开发中,ref也可以定义对象类型数据,ref会自动调用reactive方法来实现对象类型数据的响应式。
另外,接下来还会为大家带来vue3的用户代码片段,vue2的可以点一下这里。