首页 > 其他分享 >vue3笔记

vue3笔记

时间:2022-10-31 12:56:46浏览次数:52  
标签:vue const app 笔记 vue3 组件 config

1.toRefs可以把对象变成响应式对象

2.生命周期

vue2里面的beforeDestory --> beforeUnmount

​ destoryed --> unmounted

3.侦测变化-watch

watch()第一个参数是要检测变化的值,可以是数组形式同时检测多个

如果想要检测对象中的某一个属性,参数可以写成函数

watch([()=>data.count],()=>{})

可以把公共逻辑放到一个hooks文件夹下面,建立对应的ts文件

与mixin相比,很清楚数据的来源、可以设置别名

4.defineComponent

对setup函数进行封装,返回options对象

defineComponent最重要的是,在TypeScript下,给予组件正确的参数类型推断

setup(props, context) {}

这个context上面提供了三个常用的属性(vue2中挂载在this上面的)attrs、slots、emit

5.Teleport

传送组件

如果一个弹窗组件在深层的子组件中又想在最外层居中,样式不好处理

比如在深层弹窗子组件外面包裹teleport

<teleport to="#modal">
	<div id="center">
        <h2>this is a modal</h2>
    </div>
</teleport>

在外层父组件中可以添加要传送到的节点

<div id="app"></div>
<div id="modal"></div>

vue3里面的emit

export default defineComponent({
    emits:{
        'close-modal':null
    },
    setup(props, context){
        const buttonClick = () => {
            context.emit('close-modal')
        }
        return {
            buttonClick
        }
    }
})

6.Suspense

异步组件,Suspense里面也可以包裹多个组件

<Suspense>
	<template #default>
        <async-show/>
        <dog-show/>   
    </template>
    <template #fallback>
        <h1>Loading !...</h1>
    </template>
</Suspense>

在AsyncShow组件中

import { defineComponent } from 'vue'
export default defineComponent({
    setup() {
        return new Promise((resolve) => {
            setTimeout(() => {
                return resolve({
                    result:42
                })
            },3000)
        })
    }
})

捕捉suspense包裹组件的错误可以使用一个钩子函数onErrorCaptured

7.Provide/Inject

provide/inject有点像原来的bus

发送的地方

provide('名称','要传的数据')

在接收的地方

const temp = inject('名称')

8.全局API修改

vue2入口文件中是对全局vue对象上的一些属性进行修改,会产生一些问题

  • 单元测试全局配置非常容易污染全局环境
  • 在不同的apps中,共享一份有不同配置的Vue对象,就会变的很困难

vue3中改成从原来直接修改vue对象,改为修改vue对象的实例

import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)
app.use('...')
app.mixin('...')
app.component('...')

app.mount('#app')
vue3相比vue2修改的api(不全):

全局配置Vue.config -> app.config

config.productionTip被删除

config.ignoredElements改名为config.isCustomElement

config.keyCodes被删除

全局类注册API

Vue.component -> app.component

Vue.directive -> app.directive

行为扩展类API

Vue.mixin -> app.mixin

Vue.use -> app.use

tree shaking机制在es6的export导出之后,如果没有使用,webpack打包的时候就不会打包进去

vue3中全局的api改成具名的导出,就是为了打包的时候可以减少代码

9.script setup语法

优点:

更少的样板内容,更简明的代码,可以自动return出去

能够使用纯TypeScript声明props和抛出事件

更好的运行时性能

更好的IDE类型推断性能

<h1>{{hello}}</h1>
<script setup lang="ts">
import { defineProps, defineEmits } from 'vue'
interface IUser {
    name: string;
    age: number;
}
interface IEvents {
    (e:'change', age:number):void
}
const props = defineProps<{user: IUser}>()
const emit = defineEmits<IEvents>()
const onChange = () => {
    emit('change', props.user.age)
}
import HelloWorld from './components/HelloWorld.vue'   // 可以直接使用
const hello = 'hello world'
</script>

标签:vue,const,app,笔记,vue3,组件,config
From: https://www.cnblogs.com/oaoa/p/16843907.html

相关文章

  • 赏金猎人笔记-电子邮件中所存在的sqli
      前言本篇文章主要测试的是密码忘记功能;过程我第一次嘗試沒有空格的輸入:[email protected]=>valid“a”@.com=>valid然後用空格:[email protected]=>無效“d......
  • 端口安全学习笔记
    端口安全记录一些端口渗透时的方法和思路免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.大纲Tips......
  • 【HDLBits刷题笔记】11 Shift Regiters&More Circuits
    Shift4异步复位同步置数和使能。moduletop_module(inputclk,inputareset,//asyncactive-highresettozeroinputload,inputena,inp......
  • Redis学习笔记
    Redisshodan:"product:Redis"shodan:product:"Rediskey-valuestore"fofa:protocol="redis"Redis基础Redis相关文章细数redis的几种getshell方法......
  • Kubernetes学习笔记
    Kuberneteskubernetes,简称K8s,是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的......
  • MSSQL 学习笔记
    MSSQLfofa:app="Microsoft-SQL-Server"MSSQL基础MSSQLMSSQL注入MSSQL数据库注入笔记环境搭建MSSQL搭建相关教程aleenzz/MSSQL_SQL_BYPASS_WIKI相......
  • Mysql学习笔记
    Mysqlshodan:"product:MySQL"fofa:app="Oracle-MySQL"描述MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是一种关联......
  • 学习笔记之初识混沌工程
    概要定义:主动发现系统中脆弱点的一整套方法论。目的:如何让系统在不确定性中获益?接受“系统越复杂,越脆弱”的事实,让系统在每一次失败中获益,然后不断进化。在实践中,用一......
  • 矢量&凸包学习笔记
    矢量&凸包学习笔记矢量矢量(向量)的定义和表示法定义:一条有方向的线段。表示:如下图。那么我们把这一条矢量写作:\(\overrightarrow{AB}\),它的长度为\(a\),记作\(\left|\o......
  • 面试官:vue2和vue3的区别有哪些?
    一、Vue3与Vue2区别详述1.生命周期对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上+“on”,功能上是类似的。不过有一点需要注意,Vue3在组合式API(Comp......