Vue3.0

2023-11-18

teleport

  • Teleport 提供了一种干净的方法,允许我们控制在 DOM 中哪个父节点下呈现 HTML,而不必求助于全局状态或将其拆分为两个组件。
<teleport to="#modals">
  <div>A</div>
</teleport>

<teleport to="body">
  <div>A</div>
</teleport>

eg:

当前modal组件一般挂载在父组件下,想让组件居中展示一般使用postion: fixed;来定位,使用teleport后可挂载在根节点下可使用postion: absolute;定位

ref/reactive/toRefs

  • ref既可以为基础数据提供响应式,也可以为引用数据类型提供响应式
  • ref通过.value改变当前引用对象的值
const useName = ref({ name: 'xxx' }) // { value: { name: 'xxx' } }
userName.value = { name:'yyy' }
const count = ref(0)
count.value = 1
  • reactive一般为引用数据类型提供响应式
  • ref与reactive区别
function useObj1() {
  const useName1 = reactive({ name: "xxx" });
  const updateName1 = () =>
    (useName1.name = useName1.name === "xxx" ? "yyy" : "zzz");
  return { useName1, updateName1 };
}

function useObj2() {
  let useName2 = reactive({ name: "xxx" });
  const updateName2 = () => (useName2 = { name: "ddd" });
  return { useName2, updateName2 };
}

function useObj3() {
  let useName3 = ref({ name: "xxx" });
  const updateName3 = () => (useName3.value = { name: "ddd" });
  return { useName3, updateName3 };
}
  • toRefs为解构赋值数据提供响应式
let book = reactive({ title: 'xxx', name:'yyy' })
const { title } = book // title无响应式
const { name } = toRefs(book) // name具有响应式

computed/watchEffect

  • computed: 接受 getter 函数并为 getter 返回的值返回一个不可变的响应式 ref 对象。或者,它可以使用一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象。
const count = ref(1)
const plusOne = computed({
  get: () => count.value + 1,
  set: val => {
    count.value = val - 1
  }
})

plusOne.value = 1
console.log(count.value) // 0
  • watchEffect: 为了根据反应状态自动应用和重新应用副作用,我们可以使用 watchEffect 方法。它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。
  • watchEffect与watch的区别
    1. watchEffect不需要指定监听的属性,依赖是自动收集的
    2. watch可以收集到变更前后的value,而watchEffect不行
    3. watchEffect会在组件初始化时执行一次,用以收集依赖,同computed,而watch不需要
    4. watchEffect可清除副作用
export default {
  setup() {
    const keyword = ref('')
    const asyncPrint = val => {
      return setTimeout(() => {
        console.log('user input: ', val)
      }, 1000)
    }

    watchEffect(
      onInvalidate => {
        const timer = asyncPrint(keyword.value)
        onInvalidate(() => clearTimeout(timer))
      },
      {
        flush: 'post' // 默认'post',同步'sync','pre'组件更新之前
      }
    )

    return {
      keyword
    }
  }
}

composition API

  • setup()
  1. props & context
  2. lifecycle

选项 API

Hook inside inside setup

beforeCreate Not needed*
created Not needed*
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeUnmount onBeforeUnmount
unmounted onUnmounted
errorCaptured onErrorCaptured
renderTracked onRenderTracked
renderTriggered onRenderTriggered
  1. provide/inject
  • 根组件
setup() {
  const location = ref('North Pole')
  const geolocation = reactive({
    longitude: 90,
    latitude: 135
  })
  provide('location', location)
  provide('geolocation', geolocation)
}
  • 孙组件
setup() {
  const userLocation = inject('location', 'The Universe')
  const userGeolocation = inject('geolocation')

  return {
    userLocation,
    userGeolocation
  }
}

typescript

  • 在vue2.0中,一般把组件改写成tsx形式来提供ts类型检查
  • Vue3.0可使用Vue cli添加ts支持
npm install --global @vue/cli@next
vue create my-project-name
vue add typescript
  • vue3.0中,只需要在script标签上添加lang=ts即可支持ts类型检查
<script lang="ts">
  let str: string = 'str'
  str = 123 // error
</script>

项目

仿jd商城h5项目

PC后台管理项目

参考文档

中文文档

英文文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue3.0 的相关文章

随机推荐

  • python3_面向对象

    面向对象 魔术方法 描述器Descriptors 槽位slots 面向对象 OOP Object Oriented Programing 面向对象是认识世界的一种方法论 一切皆对象 类class 抽象的概念 一类具有共同特征的事物的集合 用
  • 51单片机 学习之旅[3] 中断-定时器

    中断 就是 单片机main运行的时候 如果外部传来一个信号 那么就暂时停止现在的正在处理的 事情 转而去处理 这个信号 处理这个信号完毕以后 又返回去main去继续处理之前的 有个比较好的例子是 你正在晾衣服 你正在晾衣服 突然水烧开了 你
  • 文件IO(三.文件属性和目录)

    1 文件截短 truncate NAME truncate ftruncate truncate a file to a specified length truncate ftruncate用来把文件截短到指定的长度 SYNOPSIS i
  • 2021-03-30

    远程调试 使用特定JVM参数运行服务端代码 要让远程服务器运行的代码支持远程调试 则启动的时候必须加上特定的JVM参数 这些参数是 Xdebug Xrunjdwp transport dt socket suspend n server y
  • 全屏Activity弹出键盘不顶起布局

    最近遇到的一个问题是全屏Activity中要求弹出键盘不顶起布局 首先windowSoftInputMode的取值是有多个的 在全屏场景下adjustPan是没有用的 需要使用adjustResize首先确保键盘不顶起布局 android
  • 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料

    图文教程悦享地址 点击打开链接 视频教程 B站地址 点击打开链接 一 准备工作 一个8G以上的U盘 有的U盘标的是8G 实际只有X 实际容量小于7 5G的会失败 MacOS镜像 TransMac 刻录工具 DiskGenius 分区工具 E
  • 机器学习DGA域名检测

    恶意域名 恶意域名是指黑客在攻击过程中或者对目标网络实施控制时 使用dga算法生成的域名 这种域名通常硬编码在恶意软件中 我们在做流量分析时不仅要通过流量的指纹特征识别威胁 也可以通过检测是否解析了恶意域名来判断网络中是否存在肉鸡 传统DG
  • IDEA编译报错:java: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出

    IDEA编译Flink源码时报错 java 未报告的异常错误X 必须对其进行捕获或声明以便抛出 原因是环境变量配置的是JDK8 Flink部分代码是基于JDK11编写的 将JDK升级为JDK11 重新编译即成功
  • 推荐一款基于XNA的开源游戏引擎《Engine Nine》

    一 前沿导读 XNA是微软基于 Net部署的下一代3D 2D游戏开发框架 其实XNA严格来说类似下一代的DirectX 当然不是说XNA会取代DirectX 但是基于XNA我们对于面向XBOX360 WP等系列其他平台的移植成本非常的低 据
  • 从系统里面查看服务器端口,从系统里面查看服务器端口号

    从系统里面查看服务器端口号 内容精选 换一换 已成功登录Java性能分析 待安装分析辅助软件的服务器已开启sshd 已安装JDK并配置环境变量 打开 添加目标环境 窗口 如图1所示 参数说明如表1所示 添加目标环境添加目标环境参数说明参数说
  • shell脚本简介+编写

    1 常用Linux命令 2 Linux下脚本编写 3 windows下CMD常用命令 文章目录 一 变量 1 系统预定义变量 2 自定义变量 3 特殊变量 n n n
  • C++ 标准库函数 bind

    背景 可调用对象 对于一个对象或者一个表达式 如果可以对其使用调用运算符 则称为可调用对象 调用形式 一种调用形式对应了一个函数类型 指明了调用返回类型以及传递的参数类型 比如 int int int std bind 概念 可将 bind
  • 勇于尝试新鲜事物,利于项目来积累学习经验

    很多人都会根据企业的发展需求 再选择自己的开发方向 其实没必要完全根据企业的发展路线来决定的个人的职业路线 正如 黑客与画家 和 黑客帝国 所表达的 程序员应该将白天的工作作为一种职业相关性的经验积累 而将晚上的时间用于尝试新的技术和领域
  • matlab 学习算法,matlab深度学习算法合集

    实例简介 CAE CNN NN SAE等等matlab版深度学习算法合集 以及相关测试数据 拿到就能直接用 实例截图 核心代码 DeepLearnToolbox matlab DeepLearnToolbox CAE caeapplygra
  • java中空值怎么表示_JAVA中空值null与字符串null含义的区分

    java中字符串型的量 如 String s 初始化为空时 s null 打印出来为null 但是对他不能进行 isEmpty 和 length 的操作 会抛出空指针异常 给他们后边添加字符串后 s s yuanyuan 打印时前边会保留n
  • 2019年全国一二线城市程序员工资大调查

    我在4月1日到3日之间 抓取了某招聘网站的软件和互联网类招聘数据40万条 其中通过程序判断为程序员的14万条 地域方面 我选择了24个主要城市 这里的程序员包括普通程序员 架构师和算法工程师 美工等不计算在内 这点和2017年不同 如果你只
  • ftp

    1 ftp上传文件 1 1相关依赖
  • OpenMMLab_0【简介】

    1 项目动机 统一的深度学习框架 统一的算法框架和生态 自2018年开源以来已经能够实现很多算法 2 总体现状 3 总体框架概览 3 1 算法训练 部署一体化 3 2 算法框架介绍 MMDetection MMDetection3D 7 个
  • Bootstrap入门(一)

    前言 大家好 我是九歌 今天我要分享的内容是Bootstrap的入门 首先老规矩先上思维导图 提示 以下是本篇文章正文内容 下面案例可供参考 一 Bootstrap 学习一门新的技术我们终究都逃不过三个W What Why Where 1
  • Vue3.0

    teleport Teleport 提供了一种干净的方法 允许我们控制在 DOM 中哪个父节点下呈现 HTML 而不必求助于全局状态或将其拆分为两个组件