当前位置: 首页 > article >正文

Vue3.5正式上线,父传子props用法更丝滑简洁

摘要

Vue3.52024-09-03正式上线,目前在Vue官网显最新版本已经是Vue3.5,其中主要包含了几个小改动,我留意到日常最常用的改动就是props了,肯定是用Vue3的人必用的,所以针对性说一下props两个小改动使我们日常使用更加灵活。

一、带响应式Props解构赋值

简述: 以前我们对Props直接进行解构赋值是会失去响应式的,需要配合使用toRefs或者toRef解构才会有响应式,那么就多了toRefs或者toRef这工序,而最新Vue3.5版本已经不需要了。

这样直接解构,testCount能直接渲染显示,但会失去响应式,当我们修改testCount时页面不更新。

<template>
  <div>
    {{ testCount }}
  </div>
</template>

<script setup>
  import { defineProps } from 'vue';
  const props = defineProps({
    testCount: {
      type: Number,
      default: 0,
    },
  });

  const { testCount } = props;
</script>

保留响应式的老写法,使用toRefs或者toRef解构

<template>
  <div>
    {{ testCount }}
  </div>
</template>

<script setup>
  import { defineProps, toRef, toRefs } from 'vue';
  const props = defineProps({
    testCount: {
      type: Number,
      default: 0,
    },
  });

  const { testCount } = toRefs(props);
  // 或者
  const testCount = toRef(props, 'testCount');
</script>

最新Vue3.5写法,不借助”外力“直接解构,依然保持响应式

<template>
  <div>
    {{ testCount }}
  </div>
</template>

<script setup>
  import { defineProps } from 'vue';
  const { testCount } = defineProps({
    testCount: {
      type: Number,
    },
  });

</script>

相比以前简洁了真的太多,直接解构使用省去了toRefs或者toRef

二、Props默认值新写法

简述:以前默认值都是用default: ***去设置,现在不用了,现在只需要解构的时候直接设置默认值,不需要额外处理。

如下第12就是旧写法,其它以前Vue2也是这样设置默认值

<template>
  <div>
    {{ props.testCount }}
  </div>
</template>

<script setup>
  import { defineProps } from 'vue';
  const props = defineProps({
    testCount: {
      type: Number,
      default: 1
    },
  });
</script>

最新优化的写法 如下第9行,解构的时候直接一步到位设置默认值,更接近js语法的写法。

<template>
  <div>
    {{ testCount }}
  </div>
</template>

<script setup>
  import { defineProps } from 'vue';
  const { testCount=18 } = defineProps({
    testCount: {
      type: Number,
    },
  });
</script>

总结

这次更新其实props的本质功能并没有改变,但写法确实变的更加丝滑好用了,props使用非常高频感觉还是有必要跟进这种更简洁的写法。


http://www.kler.cn/a/401113.html

相关文章:

  • FromData格式提交接口时入参被转成JSON格式问题
  • ggplot2-scale_x_continuous()
  • Elasticsearch 重建索引 数据迁移
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • Oracle OCP认证考试考点详解082系列19
  • 深入理解 SQL_MODE 之 ANSI_QUOTES
  • Redis 性能优化 18招
  • 每日学习记录003:(C++)unique_ptr和shared_ptr
  • ftrack 24.10全面升级:Autodesk Flame集成与多项新功能性能改进将发布
  • spring boot启动停止重启脚本
  • 视觉SLAM--经典视觉SLAM框架
  • MySQL数据库-SQLyoung的使用
  • 【金融风控项目-07】:业务规则挖掘案例
  • 播放器开发之ffmpeg 硬件解码方案
  • 【一文了解】C#基础-数组
  • leetcode 面试150 之随机链表的复制
  • Oracle 19c修改pga报ORA-00093、ORA-01078错进行分析处理
  • 美国人工智能国家安全备忘录核心解读(上)
  • DimensionX:单图生成任意的3d/4d视图
  • 3. 用Ruby on Rails创建一个在线商城
  • Ruby编程语言全景解析:从基础到进阶
  • linux中如何退出python
  • excel打开csv文件乱码的问题
  • 毛选阅读第一卷
  • 1Panel 推送 SSL 证书到阿里云、腾讯云
  • Spring Boot汽车资讯:科技与速度的新境界