vue3.0

创建vue3.0

安装---npm i -g @vue/cli 默认更新到最新版本
npm -v 保证vue-cli在4.5版本以上
vue create 项目名
cd 项目名
npm run serve

eslintrc.js--->eslint的配置文件,修改后要重启服务
babel.config.js--->对插件进行配置
tsconfig.js--->对ts项目进行配置

main.ts

createApp:根据传入的组件生成一个对应的实例对象
APP:所有组件的父级组件
createApp(App).mount('#app') :将实例对象挂载到指定标签下

App.vue

1.<script lang="ts"></scrpit>
里面可以写ts代码
defineComponent:根据传入的配置对象,生成对应的组件

---区别一:vue2组件html模板中必须有一个根标签,vue3中可以没有

vscode自动生成代码块

ts回车--->自动生成代码块 (快捷键)
vscode--设置---用户代码片段--代码块在.vue文件中使用,选择vue.json中定义代码块

    "Print to console": {
        "prefix": "ts",
        "body": [
            "<template>;",
            "<div>;",
            "</div>;",
            "</template>;",

            "<script lang='ts'>",
            "import {defineComponent} from vue",
            "export default defineComponent({})", 
            "</script>",

            "<style scoped>",
            "</style>",
        ],
        "description": "Log output to console"
    }

vue3.0---setup

在创建组件之前执行,如果setup返回值是一个对象,对象的属性或者方法可以直接在模板中使用

vue3.0---ref

将一个普通数据变成一个响应式数据

import {ref}from "vue"
export default defineComponent({
  name:"ref",
  setup(){
   const msg=ref('xd')   ---使msg成为响应式数据
   function changeMsg(){
     msg.value+='...'    ----ref对象取值时为msg.value
   }
  }
})

vue3.0---reactive

定义多个数据的响应式

import {reactive}from "vue"
export default defineComponent({
  setup(){
   const obj=reactive({
         name:"张三",
         age:90
       })   ---使obj成为响应式数据
  
  }
})

vue3.0---setup细节

setup执行时机---在beforeCreate之前执行(执行一次),此时组件对象还没有创建
this是undefined,data/computed/methods/props:都是不能使用的
可以用getCurrentInstance,就可以替代this存在。
setup返回值---返回一个对象,可以在模板中直接使用
返回的对象中的属性会与data函数返回对象的属性合并为组件对象的属性 mounted中打印this
返回的对象中的方法会与methods的方法合并为组件对象的方法 mounted中打印this可验证

import {getCurrentInstance}from "vue"
export default defineComponent({
  setup(){
    console.log("setup执行了")
   const {proxy}:any=getCurrentInstance();
  console.log('2')
  }
beforeCreate(){
  console.log('3') 
}
})

vue3.0---setup的参数

props:一个对象,里面有父级向子级组件传递的数据,并且在子组件中使用props接收到的所有属性,并且获取到的数据保持响应性
context:一个对象,这个对象暴露了三个组件的属性,我们可以通过解构的方法分别获取这三个属性{attr ,slots,emit}
attr:绑定到组件上的非props数据,并且是非响应式的。
emit:vue2.0 this.$emit
slots:是组件的插槽,也不是响应式的

//props:["msg"],  --->先接收数据,再使用
setup(props,context){
 // console.log(props.msg)
console.log(context.attrs.msg)
//emit  子组件向父组件分发事件
}

props.msg和context.attrs.msg不能同时访问,只能有一个参数去访问msg

vue3.0---生命周期钩子函数

beforeCreate -> 请使用 setup()
created -> 请使用 setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured
执行顺序

beforeMount(){console.log(vue2+"1")}
Mount(){console.log(vue2+"2")}
setup(){
onBeforeMount(){console.log(vue3+"1")}
onMount(){console.log(vue3+"2")}
}

执行顺序:vue31--vue21--vue32--vue22

vue3.0--ref的新用法(自动获取焦点)

<input  type="text" ref="demo">
setup(){
  const demo=ref<HTMLElement|null>(null)
  onMounted(()=>{
 demo.value&&demo.value.focus
});
return{demo}
}

vue3.0中的computed(计算属性)

---返回一个不变的响应式ref对象
computed(()=>{count.value+1})
---还可以使用get,set函数的对象来创建可写的ref对象
computed({
get:()=>count.value+1;
set:val=>{
count.value = val - 1;
}
})

vue3.0中的watch(监视器)

watch的参数:监视源,回调函数,配置项

watch(obj,()=>{
console.log(obj的值发生变化了)
},{
  immediate:true --->配置项
  deep:true --->配置项
})

watch监听多个源
watch([obj1,obj2],()=>{})

vue3.0中新特性provide和inject

如何使用:
利用provide和inject实现跨层组件的信息通信 父级组件跨过子组件给孙子组件传值
父组件--->provide('color',color)
孙子组件--->const color=inject('color ')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容