手把手教你玩转Vue.js组件(一)

简介: 在阅读本文之前,请先确认你是否满足以下几个要求:① 有一定的前端基础② 掌握Vue.js最基本的使用(也许从未使用过组件,没关系,这正是本文所要讲的)③ 对组件化概念有一定的了解当然,如果你已经对Vue.js组件运用得炉火纯青,那么恭喜你,你也没有必要浪费时间阅读本文了。

在阅读本文之前,请先确认你是否满足以下几个要求:

① 有一定的前端基础
② 掌握Vue.js最基本的使用(也许从未使用过组件,没关系,这正是本文所要讲的)
③ 对组件化概念有一定的了解

当然,如果你已经对Vue.js组件运用得炉火纯青,那么恭喜你,你也没有必要浪费时间阅读本文了。

接下来,本文将以具体实例讲解以下几个有关Vue.js组件的知识点:

① 如何封装一个组件
② 组件内数据的存储
③ 父组件调用执行子组件方法

一、需求

封装一个移动端常用的简单弱提示组件,如下图所示:

当提示出现后,2s之后自动消失。

二、编写全局组件

1. 语法

Vue.component( 组件名称,选项对象 )

2. 示例代码

/*CSS代码部分省略*/
//Javascript
Vue.component('pop-tips',{
    data: function(){
        return {
            popShow: false,
            popText: ''
        }
    },
    template: '<div class="pop-tips" :class="{show: popShow}"><span>{{popText}}</span></div>',
    methods: {
        popTips: function(text){
            var _this = this;
            this.popShow = true;
            this.popText = text;
            setTimeout(function () {
                _this.popShow = false;
            },2000);
        }
    }
});

3. 代码解析

pop-tips为组件名称,调用时可以直接使用<pop-tips></pop-tips>

② 选项对象中data属性必须是函数形式,并将组件数据对象通过函数返回值形式返回。这点与Vue根实例中data不同,因为组件的主要作用是方便复用,而每个组件在调用时数据是独立的,而并不是共用的。

③ 选项对象中template属性是个字符串,其中放的是组件HTML模板内容。

④ 选项对象中methods属性是个由函数组成的对象,这与Vue根实例中的methods属性基本一致。

三、组件调用

函数定义是为了最终的执行调用,同样的,组件定义好了,我们也得知道如何去使用它。

<!--HTML-->
<article id="app">
    <input type="button" value="点击学习更多前端知识" @click="showTips"/>
    <!--组件调用-->
    <pop-tips ref="tips"></pop-tips>
</article>
//Javascript
var vm = new Vue({
    el: '#app',
    methods: {
        showTips: function(){
            this.$refs.tips.popTips('请关注微信公众号:前端微站');
        }
    }
});

上面代码中this.$refs.tips获取的是pop-tips组件实例(其中tips是我们在组件调用时标签上设置的ref属性值),获取到组件实例之后我们便可以取得其中的任意数据和方法。

当然,你可能会觉得每次调用这个组件方法时写这么长一串太麻烦,没关系,我们可以再封装一个全局方法:

function popTips(text){
    vm.$refs.tips.popTips(text);
}

那么上面的弱提示代码就可以写成:

popTips('请关注微信公众号:前端微站');

最终的运行效果就是,当点击“点击学习更多前端知识”这个按钮时,弹出“请关注微信公众号:前端微站”弱提示,并且弱提示在2秒后自动消失。

结束语: 本文对Vue.js组件的讲解可能还不够细致,不够深入,示例也相对比较简单,如有不足之处希望大家评论指出。谢谢!

相关文章
|
10天前
|
JavaScript
Vue 父传子组件传参 defineProps
Vue 父传子组件传参 defineProps
|
10天前
|
JavaScript 前端开发
Vue 创建组件
Vue 创建组件
|
14天前
|
JavaScript
vue给table组件添加合计
vue给table组件添加合计
12 0
|
30天前
|
存储 JavaScript BI
vue组件间通信的几个方法
vue组件间通信的几个方法
22 0
|
1月前
|
JavaScript
vue 异步加载组件
vue 异步加载组件
20 3
|
1月前
|
JavaScript
Vue.js 修饰符:精准控制组件行为
Vue.js 修饰符:精准控制组件行为
|
30天前
|
JSON JavaScript 前端开发
【form-generator在线表单生成---vue父组件调用vue弹框组件】
【form-generator在线表单生成---vue父组件调用vue弹框组件】
34 1
|
1月前
|
JavaScript
如何使用Vue的路由实现组件的懒加载和按需加载?
如何使用Vue的路由实现组件的懒加载和按需加载?
29 1
|
10天前
|
JavaScript
vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)
vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)
29 0
|
6天前
|
JavaScript
vue 组件注册
vue 组件注册