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() 将它进行转换

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠泠在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值