vue学习 --- 第九天 组件化 – 额外知识补充

目录:

1、组件的生命周期

2、组件中的ref引用

3、动态组件的使用

4、keep-alive组件

6、组件的v-model

5 异步组件的使用

7、组件的混入Mixin

 

 

一、组件的生命周期

35f7e0ce3e4a44d890a090e6d14b0126.png

 v-if是会进行组件卸载的、销毁,true的时候就是组件创建04daaf5499d84bde882f261dffc7202a.png7c433af60f9b4149a8fcbfefb47cf622.png

 created生命周期时是获取不到dom的,从mounted的时候才能获取dom

74d44fcb8ce14185894b61de9b787454.png

 

二、组件中的ref引用(使用的比较少,除非必须获取原生dom,否则不建议使用)

vue里面不需要用到queryselector来获取dom元素,ref获取的元素可以当成原生获取的。这个方法也是可以获取组件实例的。

问题:父组件获取子组件的实例后能干嘛?

可以在父组件里面调用子组件的方法和获取子组件里面的子元素或根。(vue2里面的组件只能有一个根元素,vue3里面的组件允许多个根元素;但是只建议使用一个根。)

8ac98e6d3776488a912fa73c1fe19750.pngd468cdaef4f44101bc7c01775e241814.png4b9ec53523264bba965d4aa144472fd8.png

 

78028fba840b4a5286f642ccb930e9c0.png

 

使用方法:

730300aba9f44d4db2821ffdbe0a5d58.png

ad21f172b7aa4ded8db28f51e5b1c6ce.png

 

83223034678b4515ac29b4e5cbfbea29.png

da7bd1c4f568420bb596ca2f2b295b18.png9e89ca9f3c0c4ec9a042ff9ebd5531ea.png 8d4e6e4a8a5e444283e3f89fc2455cb8.png

e0984244dbe34e5784150b1db0904b02.png

 

 

 

三、动态组件的使用(vue内置组件)

使用方法:

通过改变currentindex来控制

05fc48f32468458ab7458762ea619a25.png

 13c55f31af7a42f4ab4d1d38d7401866.png

 

c3ec13b1a2114fc0b588f93f899599d4.png

dc591886ddf14c5f9029703e90586a5a.png

 

四、keep-alive组件

配合动态组件使用效果好

注意:

1、include、exclude、max等号取的名字一定要是组件的name1a1578681fe441a3a9b7f2f73492419e.png,不能是你父组件引入的组件自定义名字e97e4cc9c66648bdb2f3dc4d4d381dbe.png

 

 

b453df620b564e76a69e80748f55b5ea.png

a947ffe7e97b4796b8bebc70cae186b6.png

 想要监听keepalive组件什么时候切出去和切进来,就得用下面的方法activated

2efb6fc0eba447719a7407ff26f93ec8.png

 

五、异步组件的使用

第三方库都交供应商

分包的原因是,防止用户在进入页面的时候发生白屏很久的情况,因为这时候在下载很多文件,其中有一些是暂时用不到的文件。如果使用分包的方法的话可以加快浏览器加载速度,用户体验变好。

这里面可以分包文件,也可以分包组件。

 

异步组件使用的比较少,一般都去用路由懒加载去了

faee5afdaf794b05866e5d01e1de44af.png

 上图是分包utils里面的某个hook函数。

b42fc7f1b35c4d11ad0704b014204030.png

 

d3a3c63d4b8b408a96fcbe3b8d819b46.png

8c5eb68d3d1a4763a3fac8d27f55f0fd.png 注意异步组件使用方法

36ca128892f84ef0ba592f26dc546a2f.png

 

六、组件的v-model

作用是可以从子组件修改父组件的data的某个变量:

(父组件)

(子组件)

 组件v-model做到两件事情:(1)props给子组件传值(2)直接做好子组件向父组件发送emit的@事件。

注意:(1)父组件传值给子组件,子组件接收方法和props的一样

(2)子组件向父组件传值的方法有限制,得用 this.$emit(update:父组件传的值的名称,参数)

(3)父组件可以自定义传多个值的名字,子组件emit时候必须按父组件给的值名称发送事件和参数。

d53d718d4e074ad6a10ad217e766355b.png

8a8a359c152445f5a4f943d8fa239808.png

ad8c742fbddb4a5b8c055fec32fc7ed2.png

 

七、组件的混入Mixin3e534b87b66c4768b66f037f19714c3f.png

使用方法:

创建一个mixin文件,里面放置一个js文件,文件的内容写法如下图的sayHello.js,

其他文件需要使用mixin的内容时,在script里面import引入文件,然后在export  default里面写mixins:[  ]就可以了。 

其他文件里面一样可以使用data、methods等的options api ,mixin里的内容会自动合并(混入)到你引入的文件里面的相应option api中。

93cee14222ef41c587cfbb2093ab7f7a.png

7ddd7fa39f0540ec86635db314f3e7b0.png

62b25264632747608ad61ecac81b7fe2.png

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值