Vue函数式调用组件创建公共组件

2020-01-16 08:52:22

参考地址 Vue——函数式调用组件

正常情况下使用组件


  import 组件

import xxx from 'XXXx/XXX.vue'

注册组件

export default {

    components:{

      XXX

    },

}

然后再使用组件以及配置,如果要显示这个组件就要改别isShow的值

<template>

    <div>

        <xxx :show="isShow" text="hello"></xxx>

    </div>

</template>

所有组件都需要这么去调用,就会有些许麻烦而且不太美观。像Loading、Toast等这些组件,一页面可以经常用到而且每次显示的内容都可能不一样,这样的话用js的方式【this.$xxx.show(option)】去调用就方便很多,而且代码也更整洁。


实现

以Loading组件为例,先创建好loading组件



创建一个loading.js,并在里面引入组件以及Vue

import Vue from 'vue'

import Loading from 'loading.vue'

实例化Vue,并用render函数创建组件模板

const v = new Vue({

    render(createElement){

        return createElement(Loading) 

    }

})

渲染DOM,并挂载到body里

v.$mount() //渲染

 

document.body.appendChild(v.$el) //挂载

获取组件的实例

const load = v.$children[0]

定义需要被暴露的接口

//显示loading弹窗

function showLoading(opt){

    //load相当于是在Loading.vue当中的this

    //showLoading()就是methons中的函数

    load.showLoading(opt)

}

 

export default {

    showLoading

}

最后在mian.js中引入,并且挂到Vue的原型里

import Vue from 'vue'

import loading from './component/Loading.vue'

 

Vue.prototype.$loading = loading

调用loading

<template>

   <div>

       <button @click="load">Loading</button>

   </div>

</template>

<script>

export default {

   name:'test',

   data () {

      return {}

   },

   methods: {

      load(){

         this.$loading.showLoading({

            info:'加载中'

         })

      }

   }

}

</script>

效果:



  • 2019-01-23 20:56:57

    YouTube视频爬虫-批量采集-低成本解决方案-技术难点和细节回顾

    对于我们这些国内玩家而言,实现youtube视频爬虫和批量采集有先天性的遗憾。起初,公司需要一大批的youtube视频,时长3分钟左右,720p下载的话,每视频30-50M左右。公司雇了一大批人,采购科学上网神器手工下载 ,无奈,效率之低令人发指。所以老板要我做爬虫自动采集,需求每天下载2000+个视频,视频存储需要提高国内访问速度,方便合作方的程序抓取我们的内容。 --------------------- 作者:ucsheep 来源:CSDN 原文:https://blog.csdn.net/ucsheep/article/details/81380342 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2019-01-24 16:11:39

    数据库去除重复记录

    如何删除数据库中重复的记录 一般情况下,数据库去重复有以下那么三种方法:

  • 2019-01-26 10:12:40

    一行代码让webview不加载图片

    最近项目中需要控制列表页和详情页图片资源的显示,列表页比较好做,详情页是用WebView来展示的,不太好控制图片资源的加载。在Google上找到了两个解决办法,跟大家分享一下!