Vue3中数据响应式的4种方式

        在vue3中setup默认返回的普通数据不是响应的,如果希望数据是响应式的,有4种方式,今天我就来和大家介绍一下这4种方式

 (1)reactive():reactive是一个函数,它可以定义一个复杂数据类型,成为响应式数据。

代码演示:

<template>
  <div>数据响应式</div>
  <div>
    {{ obj.msg }}
  </div>
  <div>
    <button @click="hClick">点击</button>
  </div>
</template>

<script>
import { reactive } from 'vue'
export default {
  name: 'App',
  setup() {
    //  数据响应式:
    const obj = reactive({
      msg: 'hello'
    })
    const hClick = () => {
      obj.msg = 'nihao'
    }
    return { obj, hClick }
  }
}
</script>

<style lang="less"></style>

运行结果:

点击按钮以后

(2)toRef():当我们在模板中渲染数据时,不希望由前缀的时候可以使用组合-toRef()

toRef()是函数,转换响应式对象中某个属性为单独响应式数据,并且值是关联的

代码演示:

<template>
  <div>数据响应式</div>
  <div>
    {{ msg }}
  </div>
  <div>
    {{ info }}
  </div>
  <div>
    <button @click="hClick">点击</button>
  </div>
</template>

<script>
import { reactive, toRef } from 'vue'
export default {
  name: 'App',
  setup() {
    //  数据响应式:
    const obj = reactive({
      msg: 'hello',
      info: 'hi'
    })
    const msg = toRef(obj, 'msg')
    const info = toRef(obj, 'info')
    const hClick = () => {
      msg.value = 'nihao'
      info.value= 'hihi'
    }
    return { msg, info, hClick }
  }
}
</script>

<style lang="less"></style>

(3)toRefs():toRefs函数可以定义转换响应式中所有属性为 响应式数据,通常用于结构reactive定义的对象,转换响应式对象中所有属性(也可以是一部分)为单独响应式数据,对象成为普通对象,并且值是关联的

具体代码表示:

<template>
  <div>数据响应式</div>
  <div>
    {{ msg }}
  </div>
  <div>
    {{ info }}
  </div>
  <div>
    <button @click="hClick">点击</button>
  </div>
</template>

<script>
import { reactive, toRefs } from 'vue'
export default {
  name: 'App',
  setup() {
    //  数据响应式:
    const obj = reactive({
      msg: 'hello',
      info: 'hi'
    })
    const { msg, info } = toRefs(obj)
    const hClick = () => {
    msg.value = 'nihao'
    info.vaule = 'hihi'
    }
    return { msg, info, hClick }
  }
}
</script>

<style lang="less"></style>

(4)ref函数定义响应式数据,一般用于简单类型数据

使用ref()函数时,通常要注意两点:

(1)在修改值和获取值的时候,需要.value

(2)在模板中使用ref申明的响应式数据,可以省略.value

具体代码表示

<template>
  <div>数据响应式</div>
  <div>
    {{ count }}
  </div>

  <div>
    <button @click="hClick">点击</button>
  </div>
</template>

<script>
import { ref } from 'vue'
export default {
  name: 'App',
  setup() {
    //  数据响应式:
    const count = ref(0)
    const obj = ref({ msg: 'hello' })
    const hClick = () => {
      count.value += 1
      console.log(obj.value.msg)
    }

    return { count, hClick }
  }
}
</script>

<style lang="less"></style>

ref主要是用于定义基本数据类型的数据并保证响应式能力,也可以用于对象或数据

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3数据响应式是通过使用选项式API和组合式API的几函数来实现的。其,ref()函数用于创建一个基本类型的响应式数据,reactive()函数用于创建一个对象类型的响应式数据,toRef()函数用于创建一个与另一个响应式数据相绑定的引用,toRefs()函数用于将一个响应式对象转换为一组响应式的引用。 具体来说,ref()函数可以将一个普通的JavaScript值转换为一个响应式数据。例如,你可以使用ref()函数将一个数字、字符串或布尔值转换为一个响应式数据,然后在视图使用该数据,并在数据改变时自动更新视图。 reactive()函数则可以将一个普通的JavaScript对象转换为一个响应式的对象。这意味着当对象的某个属性发生改变时,Vue会自动通知到使用该属性的代码,使得视图能够及时更新。这响应式的对象可以包含任意深度的嵌套属性。 toRef()函数可以用来创建一个与另一个响应式数据相绑定的引用。这意味着当原始的响应式数据发生改变时,与之绑定的引用也会随之改变。这在一些特定的场景下非常有用,例如在组件之间共享响应式数据时。 最后,toRefs()函数可以将一个响应式对象转换为一组响应式的引用。这样做的好处是可以方便地在组件的模板使用这些引用,而无需在每个引用前面加上.value来访问其值。 总结起来,Vue 3数据响应式是通过选项式API和组合式API的ref()、reactive()、toRef()和toRefs()等函数来实现的。这些函数能够将普通的JavaScript值或对象转换为响应式数据,使得数据的变化能够自动更新视图。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值