您现在的位置是:首页 >学无止境 >丁鹿学堂:2023前端培训学习,vue3中data详解网站首页学无止境

丁鹿学堂:2023前端培训学习,vue3中data详解

丁鹿学堂 2024-06-17 11:18:53
简介丁鹿学堂:2023前端培训学习,vue3中data详解

在vue3中,data返回的对象会被vue3代理,所以data中的数据都是响应式的。

需要注意的是,数据要在data函数中作为对象返回才可以。

为什么data是一个函数返回对象?

这样可以保证每个组件中,每一次组件创建都是一个新对象。

这样可以让每个组件之间的数据是相互独立的,修改某个组件中的数据,不会影响其他组件。

data中如果有对象,对象的数据是否被代理?

是的。vue中不仅仅是data的第一层属性被代理,如果data 中都有嵌套的对象,嵌套对象的属性也会被代理。

vue在构建响应式对象的时候,会同时将对象中的属性也做成响应式的。

shallowReactive创建浅层次的响应式对象

如果我们不想要深层次去做响应式,vue也提供了方法,引入vue中的shallowReactive方法可以实现

<script>
import { shallowReactive } from 'vue';
  export default{
    data(){

      return shallowReactive({
        name:'丁鹿学堂',
        msg:{
          add:'12313213',
          tel:'1231231231'
        }
      })

    }
  }
</script>

注意:

1此时,第一层的name,msg如果直接修改,会触发vue的响应式,但是如果修改msg.xxx的属性,不会触发vue的 响应式。

2 一般情况下不会使用此方法。使用的场景主要是我们的数据嵌套太深了,会影响性能,此时可以使用此方法。

动态添加响应式数据

在vue中,如果一开始在data中没有定义某个数据,也可以通过动态的方法添加响应式数据,比如在一些生命周期函数,或者事件调用的时候添加。

添加的语法为:

$data是vue中的固定写法。但是不建议使用,就算暂时用不到,也建议先在data中定义,可以赋值为null。

this.$data.xx =value
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。