Vue组件基础

gitHub地址:https://github.com/huangpna/vue_learn里面的lesson06

一 vue组件基本实例

举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>app1</title>
</head>
<body>
    <div id="app1">
        <button-counter></button-counter>    <!--注意:点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建。-->
        <button-counter></button-counter>
        <button-counter></button-counter>
    </div>
</body>
<script src="../js/vue.min.js"></script>
<script>
    Vue.component(‘button-counter‘,{   //全局注册一个组件
        data:function () {
            return {
                count:0
            }
        },
        template:‘<div><button @click="count++">点击一下</button>&nbsp;&nbsp;&nbsp;&nbsp;<span>{{count}}</span></div>‘
    });
    new Vue({el:‘#app1‘}); //创建一个vue实例
</script>
</html>

(1)因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

(2)一个组建的data选项必须是一个函数,而不是像之前一样直接接受一个对象

(3)有两种注册注册组件的方式:全局注册和局部注册;至此,我们的注册都只是通过Vue.component全局注册的。

(4)全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。

二 通过prop给子组件传递数据

举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>app1</title>
</head>
<body>
    <div id="app1">
        <button-counter title="My journey with Vue"></button-counter>          //通过自定义特性传递值
        <button-counter title="Blogging with Vue"></button-counter>
        <button-counter title="Why Vue is so fun"></button-counter>
    </div>
</body>
<script src="../js/vue.min.js"></script>
<script>
    Vue.component(‘button-counter‘,{   //全局注册一个组件
        props:[‘title‘],    //可以传递任何类型的值
        data:function () {
            return {
                count:0
            }
        },
        template:‘<div><button @click="count++">点击一下</button>&nbsp;&nbsp;&nbsp;&nbsp;<span v-if="count == 1">{{title}}</span></div>‘  //值显示,查看是否传递成功
    });
    new Vue({el:‘#app1‘}); //创建一个vue实例
</script>
</html>

一个组件默认可以用过任意数量的prop,任何值都可以传递给任何 prop。在上述例子中,你会发现我们能够在组件实例中访问这个值,就像访问 data 中的值一样。

一个 prop 被注册之后,你就可以像上面例子一样把数据作为一个自定义特性传递进来。

例子2:

注意:这个时候我们想要给每篇博文渲染一个组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>app2</title>
    <style>
        #app2>div{
            width:800px;
            height:160px;
            background-color: #ff4225;
            font-size:35px;
            text-align:center;
            line-height:160px;
            margin:0 auto  20px;
        }
    </style>
</head>
<body>
    <div id="app2">
        <my-content v-for="item in dataList" v-bind:num="item.id" v-bind:title="item.title"></my-content>  <!--动态传递值-->
    </div>
</body>
<script src="../js/vue.min.js"></script>
<script>
    Vue.component(‘my-content‘,{
        props:[‘title‘,‘num‘],
        data:function () {

        },
        template:‘<div>{{title}}------{{num}}</div>‘
    });
    new Vue({
        el:‘#app2‘,
        data:{
            dataList: [
                { id: 1, title: ‘博文组件‘ },
                { id: 2, title: ‘博文组件‘ },
                { id: 3, title: ‘博文组件‘ }
            ]
        }
    });
</script>
</html>

但是很多时候我们的博文不止需要标题和内容,可能要传递的数据更多,这个时候组件就会变得越来越复杂,这个时候你可以变成只接受一个单独的dataList props。

注意:必须将组件模板包含在一个父元素内,否则会报错。

原文地址:https://www.cnblogs.com/1156063074hp/p/10063228.html

时间: 2024-10-17 20:44:32

Vue组件基础的相关文章

Vue组件基础用法

前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需,使用不同的组件来拼接页面.这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦.本文将详细介绍Vue组件基础用法 概述 组件是一个自定义元素或称为一个模块,包括所需的模板.逻辑和样式.在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能.通过Vue.js的声明式渲染后,

vue组件基础之创建与使用

一.创建组件 <script src="vue.js"></script> <!--引入vue.js文件--> <div id="app"> <Vheader></Vheader> //使用组件 </div> <script> //创建组件 Vue.component('Vheader', { //一定是函数 data:function () { return {} //

vue - 组件基础

1. 全局组件 2. 局部组件 3. 常规属性传值(props属性传值) 4. v-bind传值 4.1 属性取值 4.2 在构造器向组件传值(v-bind) 5. 父子组件调用 5.1 父组件 5.2 子组件 6. 组件注册 官方文档:https://cn.vuejs.org/v2/guide/components-registration.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5

Vue 组件基础完整示例2

简介此页面可以直接复制运行,包含以下应用: Vue slot插槽使用Vue v-model使用Vue props使用父子组件数据传递element-ui使用HTML方式注册子组件,可以将子组件数据写在一个js文件中,用标签引入,然后将子组件对象置入components中Live Demo 在线示例Live Demo 提示不建议用HTML模式开发项目,建议使用vue-cli3创建项目,使用单文件组件模式开发Vue cli3 代码 <!DOCTYPE html> <html lang=&qu

跟着文档学Vue(三)——组件基础

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Vue.js-09:第九章 - 组件基础再探(data、props)

一.前言 在上一章的学习中,我们学习了 Vue 中组件的基础知识,知道了什么是组件,以及如何创建一个全局/局部组件.不知道你是否记得,在上一章中,我们提到组件是一个可以复用的 Vue 实例,它与 Vue 实例也只是拥有些许的差异.本章,我们将继续学习组件的相关基础知识,了解 Vue 的组件中的 data.prop 选项的使用. 学习系列目录地址:https://www.cnblogs.com/danvic712/p/9549100.html 仓储地址:https://github.com/Lan

2.基础:Vue组件的核心概念

一.组件基础和注册 组件概念 组件系统是 Vue 的另一个重要概念,他的核心就是封装和复用. 细节 组件的name必须是全局唯一. 二.属性.事件和插槽 组件的三大核心概念:属性.事件和插槽. 属性,事件,插槽好文 1.属性 1.1导言 vue组件 = vue实例 = new Vue(options) 不同的组件只不过是options的不同,90%的工作都是围绕配置options来进行 1.2分类 2.事件 事件冒泡 阻止事件冒泡 3.插槽 分类: 默认插槽 具名插槽 作用域插槽 本质: 作用域

Vue基础篇--8组件基础 component

Vue基础篇--8组件基础 component 1.简单示例 <div id='components1'> <button-conter></button-conter> </div> <script> // 定义一个名为button-conter组件 Vue.component("button-conter",{ data:function () { return { count:0 } }, template:`<b

Vue单文件组件基础模板

背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点,童鞋们可以在评论里帮我补充:因为有这么多优点,所以决定有必要将vue组件的常用配置项提炼出来,形成一个组件模板,方便日后项目开发复用 <template> <div> <h1>{{title}}</h1> <ChildComponents></