vue3新特性体验

本篇针对vue3的新增特性进行学习
主要来自http://www.liulongbin.top:8085/#/
声明,这是别人的总结,我仅做一些要点提炼
仅做一些补充笔记 给自己看的

  • 总的来说给我的第一映像就是有一点点像写react hook的感觉
  • setup(props, this(上下文对象))

该函数相当于一个生命周期函数,vue中过去的data,methods,watch等全部都用对应的新增api写在setup()函数中

  • 执行时机在beforecreate与created之间。vue3也是取消了这两个钩子,统一用setup代替
  • 由于所有东西都得调用api写在setup中,这让我感觉有点像写react的感觉。
  • 数据return出去,像过去data(){ return {} }一样
  • reactive({})

该函数传入一个对象,里面的数据会变成响应式的数据。类似于react中的state,只不过state更新的时候不需要setState一遍了

  • 想要使用创建的响应式数据也很简单,创建出来之后,在setup中return出去,直接在template中调用即可
  • ref()

ref也是创建响应式数据的,区别在于要用xxx.value才能访问到数据值,更推荐用ref,然后配合reactive使用

  • 当把 ref() 创建出来的响应式数据对象,挂载到 reactive() 上时,会自动把响应式数据对象展开为原始的值,不需通过 .value 就可以直接被访问
  • toRefs()

toRefs() 函数可以将 reactive() 创建出来的响应式对象,转换为普通的对象,只不过,这个对象上的每个属性节点,都是 ref() 类型的响应式数据

  • computed()

该函数用来创造计算属性,和过去一样,它返回的值是一个ref对象。
里面可以传方法,或者一个对象,对象中包含set()、get()方法

  • watch

支持传三个参数
- 想监听的数据,可以是数组形势,传入多个
- 监听数据的回调函数,该回调的参数有两个,前一个是newValue,后一个是oldValue,每一个都可以是一个数组,与之前的多个监听对应
- 监听的配置参数 是一个对象,如lazy:true,这样可以让初次挂在时不执行watch的回调

const state = reactive({ count: 0, name: 'zs' })
如果是reactive创建的数据,watch的第一个参数应该是() => state.count这种形式
const count = ref(0)
如果是ref创建的数据,那么直接传 count 即可
  • 可以在watch的回调中用onCleanup(() => clearTimeout(timerId))
    清楚无用的异步操作,举个例子可以做防抖,你可以在回调里清除防抖的那个定时器
  • 全新的生命周期函数 (只能在setup中使用)

beforeCreate -> use setup()
created -> use setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured

  • provide & inject

可以取代props,类似react,在父子传信的时候不用再一级一级的props了,只要父级provide了数据,无论嵌套多少层级的子组件,都可以在对应的子组件中inject获取数据

  • ref

写在template上的ref,用法发生了一些变化,细节看文档

总的来看,似乎无论是vue3还是react的hook,好像都在趋于一个方向靠拢,似乎都在抛去自身组件的特色写法,渐渐趋于大同,这只是我的拙见而已,我的依据是,vue在script标签中的写法做了大改版,不再像过去那样data,watch分开独立的写,在我看来,还是vue2那样写比较舒服,很清晰,但这样改版肯定有超出我认知的考虑,毕竟我只是一个才接触半年的菜鸡哈哈哈。react的hook也是类似,他要抛去的是class组件的写法,改用函数式组件。殊途同归,我想这样做的目的都是为了轻量化,让写一个组件不在那么的重。react不用整一个类出来,vue不用想用定义一个数据得data,想定义一个方法得methods。目前想法是这样子吧

认知更新

之前说js全写在setup()中不清晰,其实在vue2中,那样的option api你的逻辑可能会非常的分散,某一功能,他的数据在data中,逻辑有在methods中,有在生命周期中,这导致项目变大之后,很难阅读,跳来跳去。
所以vue3中将代码全写进setup()里,这样可以自由分块,非常舒服
react hook同理

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