Vue2.x实现this调用组件

长期以来,我都是通过父组件引入子组件的方式调用,比如一个Modal,一个Notice之类的,而很多UI框架都可以支持this.$xxx的方法调用展示,很羡慕,很自责,为啥我还在用这么low的方式?而且多个组件引入到父组件会造成层级过深,不利于渲染,而这种方式不仅优雅,而且可以直接将组件挂载到body里面,岂不是美滋滋

实现方法

1.一个Vue文件

<template>
    <div>
        this is count {{count}}
        this is the name prop {{name}}
    </div>
</template>

<script>
    export default {
        data() {
            return {
                count: 1
            }
        },
        props: ["name"],
        methods: {
            add(n) {
                this.count += n
            }
        }
    }
</script>

<style scoped>

</style>

随便来点东西,接收props 还有一个方法,应该够用了(嘻嘻)

2.一个js文件,用来写install函数


// 引入 上面那个简陋的组件
import Test from "./Test"

const TestObj = {}

TestObj.install = function(Vue, options) {
    console.log(options)
    const instance = Vue.extend(Test)
    let current;
    current = new instance()
    document.body.appendChild(current.$mount().$el)

    Vue.prototype.$test = {
        show(options) {
            // 传入props
            current.name = options
            return current
        }
    }
}

export default  TestObj;

main.js

import TestObj from "./components/test";
// 此处的第二个参数就是 install方法接收的第二个参数,一半不用,可以用来做更多个性化配置
Vue.use(TestObj, {name: "TESTOBJ"})

调用

this.$test.show("baby").add(520)

结果

组件正确展示,且数据正确

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值