经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
一文带你了解Vue3中toRef和toRefs的用法
来源:jb51  时间:2023/2/1 9:35:45  对本文有异议

toRef 顾名思义,不是ref 响应式数据,给它转成ref 响应式数据

通俗易懂的理解:

  1. <template>
  2. <h3>姓名:{{ person.name }}</h3>
  3. <h3>年龄:{{ person.age }}</h3>
  4. <h3>薪资:{{ person.job.j1.salary }}</h3>
  5. <button @click="person.name += '!'">修改姓名</button>
  6. <button @click="person.age++">增长年龄</button>
  7. <button @click="person.job.j1.salary++">涨薪</button>
  8. </template>
  9. <script>
  10. import { reactive } from "vue";
  11. export default {
  12. setup() {
  13. let person = reactive({
  14. name: "张三",
  15. age: 18,
  16. job: {
  17. j1: {
  18. salary: 20,
  19. },
  20. },
  21. });
  22. return {
  23. person,
  24. };
  25. },
  26. };
  27. </script>
  28. <style>
  29. </style>

首先实现功能没问题,接下来考虑到代码优化:

那可能会想到 我在return的时候,麻烦一些,

  1. return {
  2. name: person.name,
  3. age: person.age,
  4. job: person.job.j1.salary,
  5. };

但是,这样操作你会发现页面不是响应式的,数据修改页面不发生变化,如下:

接下来看 toRef的用法: 很明显实现了效果

  1. <template>
  2. <h3>姓名:{{ name }}</h3>
  3. <h3>年龄:{{ age }}</h3>
  4. <h3>薪资:{{ salary }}</h3>
  5. <button @click="name += '!'">修改姓名</button>
  6. <button @click="age++">增长年龄</button>
  7. <button @click="salary++">涨薪</button>
  8. </template>
  9. <script>
  10. import { reactive, toRef } from "vue";
  11. export default {
  12. setup() {
  13. let person = reactive({
  14. name: "张三",
  15. age: 18,
  16. job: {
  17. j1: {
  18. salary: 20,
  19. },
  20. },
  21. });
  22. return {
  23. name: toRef(person, "name"),
  24. age: toRef(person, "age"),
  25. salary: toRef(person.job.j1, "salary"),
  26. };
  27. },
  28. };
  29. </script>
  30. <style>
  31. </style>

介绍完toRef的用法之后,接下来来看一下toRefs的用法吧

到此这篇关于一文带你了解Vue3中toRef和toRefs的用法的文章就介绍到这了,更多相关Vue3 toRef toRefs用法内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号