长期以来,我都是通过父组件引入子组件的方式调用,比如一个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)
结果
组件正确展示,且数据正确
 
版权声明:本文为liluo101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
