当前位置:   article > 正文

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

vue3中数组响应

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

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

代码演示:

  1. <template>
  2. <div>数据响应式</div>
  3. <div>
  4. {{ obj.msg }}
  5. </div>
  6. <div>
  7. <button @click="hClick">点击</button>
  8. </div>
  9. </template>
  10. <script>
  11. import { reactive } from 'vue'
  12. export default {
  13. name: 'App',
  14. setup() {
  15. // 数据响应式:
  16. const obj = reactive({
  17. msg: 'hello'
  18. })
  19. const hClick = () => {
  20. obj.msg = 'nihao'
  21. }
  22. return { obj, hClick }
  23. }
  24. }
  25. </script>
  26. <style lang="less"></style>

运行结果:

点击按钮以后

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

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

代码演示:

  1. <template>
  2. <div>数据响应式</div>
  3. <div>
  4. {{ msg }}
  5. </div>
  6. <div>
  7. {{ info }}
  8. </div>
  9. <div>
  10. <button @click="hClick">点击</button>
  11. </div>
  12. </template>
  13. <script>
  14. import { reactive, toRef } from 'vue'
  15. export default {
  16. name: 'App',
  17. setup() {
  18. // 数据响应式:
  19. const obj = reactive({
  20. msg: 'hello',
  21. info: 'hi'
  22. })
  23. const msg = toRef(obj, 'msg')
  24. const info = toRef(obj, 'info')
  25. const hClick = () => {
  26. msg.value = 'nihao'
  27. info.value= 'hihi'
  28. }
  29. return { msg, info, hClick }
  30. }
  31. }
  32. </script>
  33. <style lang="less"></style>

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

具体代码表示:

  1. <template>
  2. <div>数据响应式</div>
  3. <div>
  4. {{ msg }}
  5. </div>
  6. <div>
  7. {{ info }}
  8. </div>
  9. <div>
  10. <button @click="hClick">点击</button>
  11. </div>
  12. </template>
  13. <script>
  14. import { reactive, toRefs } from 'vue'
  15. export default {
  16. name: 'App',
  17. setup() {
  18. // 数据响应式:
  19. const obj = reactive({
  20. msg: 'hello',
  21. info: 'hi'
  22. })
  23. const { msg, info } = toRefs(obj)
  24. const hClick = () => {
  25. msg.value = 'nihao'
  26. info.vaule = 'hihi'
  27. }
  28. return { msg, info, hClick }
  29. }
  30. }
  31. </script>
  32. <style lang="less"></style>

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

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

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

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

具体代码表示

  1. <template>
  2. <div>数据响应式</div>
  3. <div>
  4. {{ count }}
  5. </div>
  6. <div>
  7. <button @click="hClick">点击</button>
  8. </div>
  9. </template>
  10. <script>
  11. import { ref } from 'vue'
  12. export default {
  13. name: 'App',
  14. setup() {
  15. // 数据响应式:
  16. const count = ref(0)
  17. const obj = ref({ msg: 'hello' })
  18. const hClick = () => {
  19. count.value += 1
  20. console.log(obj.value.msg)
  21. }
  22. return { count, hClick }
  23. }
  24. }
  25. </script>
  26. <style lang="less"></style>

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/190962
推荐阅读
相关标签
  

闽ICP备14008679号