vue3.0 torefs,vue3中的ref函数

  vue3.0 torefs,vue3中的ref函数

  本文主要介绍Vue3如何理解reftoRef和toRefs的区别。用示例代码详细介绍,有一定的参考价值,感兴趣的朋友可以参考一下。

  一.基金会

  1 .参考

  2.toRef3.toRefs4 .最好的使用方法II。深入的

  1.为什么需要ref2.ref为什么需要?价值3。为什么需要几种新方法在toRef和toRefsVue3中创建响应数据?它们各自的功能当然不同,每种方法都有自己的应用场景。今天,我们来谈谈什么是ref和toRef?三种使用方式有什么区别?最好的使用方法是什么?

  

目录

  

一、基础

  (1)生成值类型的响应数据,并通过。价值。

  模板

  div{{ ageRef }}/div

  /模板

  脚本

  从“vue”导入{ ref }

  导出默认值{

  setup() {

  const ageRef=ref(20)

  setInterval(()={

  ageRef.value=1

  }, 1000)

  返回{

  ageRef

  }

  },

  }

  /脚本

  上面的代码定义了一个ageRef变量,每秒钟将ageRef递增1,页面上显示的值也会递增1。

  (2)可用于无功

  将上面的代码修改如下,引入reactive定义的变量,将ref定义的变量引入reactive,在模板中显示reactive的变量。最终效果与上面(1)中的效果相同。

  模板

  div{{ info.age }}/div

  /模板

  脚本

  从“vue”导入{ ref,reactive }

  导出默认值{

  setup() {

  const ageRef=ref(20)

  常量信息=反应({

  年龄:ageRef

  })

  setInterval(()={

  ageRef.value=1

  }, 1000)

  返回{

  信息

  }

  },

  }

  /脚本

  (3)可用于获取Dom

  模板

  div ref= eleDom ref-DOM-test/div

  /模板

  脚本

  从“vue”导入{ ref,onMounted }

  导出默认值{

  setup() {

  const eleDom=ref(null)

  onMounted(()={

  console . log(eledom . value . innerhtml)//ref-DOM-test

  })

  返回{

  eleDom

  }

  },

  }

  上面的代码控制台输出ref-dom-test,表示获得了dom元素。

  要获取Dom元素,必须满足以下规则

  定义的ref变量名必须与模板中ref的值一致,比如代码中的eleDom。

  

1.ref

  响应对象的道具

  创建一个有响应的引用。

  两者保持引用关系。

  让我们看看下面的代码。

  模板

  div { { state . age } }-{ { ageRef } }/div

  /模板

  脚本

  从“vue”导入{ toRef,reactive }

  导出默认值{

  setup() {

  恒定状态=反应({

  姓名:“JL”,

  年龄:18岁

  })

  const ageRef=toRef(状态,“年龄”)

  setTimeout(()={

  年龄=20岁

  }, 1000)

  setTimeout(()={

  ageRef.value=21

  }, 2000)

  返回{

  状态,

  ageRef

  }

  },

  }

  /脚本

  在上面的代码中,使用toRef将state的age属性改为响应式变量,1秒后再将state的age值改为20,此时ageRef也会变成20;2秒后,把ageRef的值改成21,state的年龄值也变成21,说明两者保持相互参照。

  ToRef针对的是响应式,而不是普通对象。如果用于非响应型,则输出结果没有响应。

  

2.toRef

  把一个有反应的物体变成正常的物体。

  对象的每个属性都是一个相应的引用。

  两者保持引用关系。

  让我们看看下面的代码。

  模板

  div{{姓名}} - {{年龄}}/div

  /模板

  脚本

  从“vue”导入{ reactive,toRefs }

  导出默认值{

  setup() {

  恒定状态=反应({

  姓名:“JL”,

  年龄:18岁

  })

  const stateRefs=toRefs(state)

  setTimeout(()={

  年龄=20岁

  }, 1000)

  setTimeout(()={

  stateRefs.age.value=21

  }, 2000)

  返回状态参考

  },

  }

  /脚本

  在上面的代码中,toRefs用于将状态转换为普通对象。这时可以直接返回stateRefs。这时可以在模板中直接调用姓名和年龄。然后1秒后将state的年龄值改为20,那么页面中的年龄也会变成20;2秒后,将stateRefs中name的值改为21,页面中的age值也将变为21,说明两者保持相互引用。

  在toRefs将响应对象变成普通对象后,每个属性都有一个响应ref,所以。需要价值才能得到它的价值。

  

3.toRefs

  Reactive是对象的响应,ref是值类型的响应。

  安装程序返回toref (state)或toref(state, XXX)-(这样您就不能在模板中使用state.xxx)

  ref的变量以xxxRef命名。

  合成函数返回的响应对象时使用toRefs。

  例如:

  模板

  divx:{{x}} y:{{y}}/div

  /模板

  脚本

  从“vue”导入{ reactive,toRefs }

  导出默认值{

  setup() {

  功能测试(){

  恒定状态=反应({

  x: 1,

  y: 2

  })

  返回参考(状态)

  }

  const {x,y}=test()

  setTimeout(()={

  x.value=2

  }, 1000)

  返回{

  x,

  y

  }

  }

  }

  /脚本

  在上面的代码中,响应对象状态是在测试函数中定义的,它通过toRefs转换成普通对象并返回。此时结构可以赋值,值有响应。

  

4.最佳的使用方式

  

二、深入

  正如我们上面提到的,值类型也可以通过使用reactive和toRef转换成responsive类型。为什么需要ref?

  值类型没有代理

  设置(),计算().可能都返回值类型。如果vue没有定义ref,用户在需要响应式值类型时,会通过其他方式(reactive/toRef,reactive/toRefs)创建ref,这样会造成代码更加混乱。

  

1.为什么需要ref

  ref为什么需要加一个. value才能得到值?何必呢?

  Ref是对象(不会丢失任何响应),value存储值。

  响应由的get和set实现。价值属性。

  你不需要。值,但在其他情况下需要它。

  

2.ref为什么需要.value

  初衷:解构对象数据,又不失响应性。

  前提:是针对有反应的对象,不是普通对象。

  结果:不创建响应,只继续响应。

  关于Vue3如何理解ref和toRef之间的区别的这篇文章到此为止。关于Vue3 ref和toRefs的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: