vue3中如何定义响应式变量

Posted 泠泠在路上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3中如何定义响应式变量相关的知识,希望对你有一定的参考价值。

vue2中定义方式:

熟悉vue2的前端开发小伙伴,都知道定义变量的方式是属于 选项式写法,所有的变量名全都定义在 data()return title:‘hello world’,里,如下图所示:

<template>
     <div>
          <h1>title</h1>
          <button @click="sayHi">按钮</button>
     </div>
</template>

<script>
export default 
    //这种是option api(选项api)
     data()
          return 
              title:'hello world'
          
     ,
     methods:
         sayHi()
         this.title = "hello vue";
         
     

</script>

那么,在vue3中定义变量的方式是组合式写法,在setup函数里,提供了ref和reactive

<template>
     <div>
          <h1>title</h1>
          <h1>person</h1>
          <button @click="sayHi">按钮</button>
     </div>
</template>

<script>
//引入vue中的一个方法
import ref,reactive from 'vue';  //ref可以把字符串变成响应式变量 ,reactive可以把对象变成响应式对象
export default 
    //composition api(组合api)
    setup()
        let title = ref("hello world");
        const person = reactive("name":"小明",age:2);
        function sayHi()
            title.value = "hello Vue"
            person.name ="小张"
        
        return
            title,
            sayHi,
            person
        
    

</script>

reactive更推荐去定义复杂的数据类型 ref 更推荐定义基本类型,ref也可以定义数组和对象,但ref操作数据需要.value,注意在template模板中不需要。reactive一直都不需要.value,但是用reactive() 创建的响应式对象,整个对象是响应式的但对象里的每一项都是普通的值,当你把它用展开运算符展开后 整个对象的普通值都不是响应式的,所以需要展开 reactive() 创建的响应式对象 又不想让他们失去响应式特点的时候 就需要用 toRefs() 将它进行转换

以上是关于vue3中如何定义响应式变量的主要内容,如果未能解决你的问题,请参考以下文章

性能再次大幅提升!细说 Vue.js 3.2 关于响应式部分的优化

vue3修改响应式代理值

Vue3中 响应式 API ( reactivereftoReftoRefs ) 详解

vue3.2 响应式之 ref reactive toRef toRefs

vue3.2 响应式之 ref reactive toRef toRefs

Vue 3 组合 API,未定义变量,生命周期