vue进阶

1. refs,parent,$children

基础使用:参考vue官方文档

$refs

父组件调用子组件的方法或属性

$parent

子组件调用父组件的方法或属性

$children

父组件调用子组件的方法或属性

实战案例

2. provide inject跨多组件通讯

refparent /children` 在跨级通信时是有弊端的。当组件 A 和组件 B 中间隔了数代(甚至不确定具体级别)时,以往会借助 Vuex 这样的解决方案,不得不引入三方库来支持。本节课则介绍一种无依赖的组件通信方法:Vue.js 内置的 provide / inject 接口。

基础使用:参考vue官方文档

实战案例

案例一:form表单验证实现

案例二:实现状态管理

app.vue

<template>
  <div>
    <router-view></router-view>
  </div>
</template>
<script>
  export default {
    provide () {
      return {
        app: this
      }
    }
  }
</script>

我们把 app.vue 理解为一个最外层的根组件,用来存储所有需要的全局数据和状态,甚至是计算属性(computed)、方法(methods)等。因为你的项目中所有的组件(包含路由),它的父组件(或根组件)都是 app.vue,所以我们把整个 app.vue 实例通过 provide 对外提供

接下来,任何组件(或路由)只要通过 inject 注入 app.vue 的 app 的话,都可以直接通过 this.app.xxx 来访问 app.vue 的 datacomputedmethods 等内容。

app.vue 是整个项目第一个被渲染的组件,而且只会渲染一次(即使切换路由,app.vue 也不会被再次渲染),利用这个特性,很适合做一次性全局的状态数据管理

3. on 与emit

基础使用:参考vue官方文档

实战案例

局部:监听通讯(只能当前组件使用)

this.$on('ftest',(e)=>{
    console.log(e);
})

this.$emit('childtest','父组件点击了')

全局:监听通讯

//app.vue
provide(){
    return {
        app:this
    }
  },
//组件
inject:['app'],
mounted(){
    this.app.$on('childtest',(e)=>{
        console.log('-----------子组件接收-----------')
        console.log(e);
    })
},
    methods:{
        event(){
            console.log('2222')
            this.app.$emit('ftest','子组件点击了')
        }
    }

常用于父组件下有多个子组件,数量未知情况,随时通知任何组件

父组件

provide(){
    return {
        $_self:this
    }
},
methods:{
    event(){
        this.$emit('childtest','$_self父组件点击了')
    }
}

子组件

inject:['$_self'],
mounted(){
    this.$_self.$on('childtest',(e)=>{
        console.log('-----------$_self子组件接收-----------')
        console.log(e);
    })
},

4. extend 与手动挂载$mount

基础使用:参考vue官方文档

实战案例

开发一个loading插件

5. 自定义组件v-model

基础使用:参考vue官方文档

实战案例

自定义组件实现v-model

6. 自定义指令实战

基础使用:参考vue官方文档

实战案例

实现骨架屏

7. v-slot

基础使用:参考vue官方文档

实战案例

v-slot封装table组件

9. nextTick

基础使用:参考vue官方文档

应用场景

1、如果要在created()钩子函数中进行的DOM操作,由于created()钩子函数中还未对DOM进行任何渲染,所以无法直接操作,需要通过$nextTick()来完成。

created(){
    this.$nextTick(()=>{
        this.$refs.myP.innerText = "我是一只小小小小鸟,想要飞,却怎么样也飞不高!";
    });
}

注:在created()钩子函数中进行的DOM操作,不使用$nextTick()会报错:

//  Error in created hook: "TypeError: Cannot set property 'innerText' of undefined"
created(){
    this.$refs.myP.innerText = "我是一只小小小小鸟,想要飞,却怎么样也飞不高!";
}

2、更新数据后,想要使用js对新的视图进行操作时。示例(略)

3、在使用某些第三方插件时 ,这些插件需要dom动态变化后重新应用该插件,这时候就需要使用$nextTick()来重新应用插件的方法。示例(略)

实战案例

10. .sync

基础使用:参考vue官方文档

实战案例

11. Mixins

基础使用:参考vue官方文档

全局调用 main.js

import mixin from 'mixins/mixin';
Vue.mixin(mixin)

局部使用

实战案例

分页调用(当前页面data配置指定参数,mixin文件中通过this.获取参数,实现简单配置就可以)

8. Render

基础使用:参考vue官方文档

实战案例

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

推荐阅读更多精彩内容