【溯源篇】从头看vue(四)——重新了解组件

news/2024/7/10 2:48:11 标签: vue

官方文档:https://cn.vuejs.org/v2/guide/components.html

全局组件创建及全局组件data的使用:

1.基本示例(script中写主体):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        .bgcolor{
            background: #F4F456;
            padding: 20px;
            width: 100%;
            height: 100px;
            text-align: center;
            line-height: 100px;
        }
    </style>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
    <div class="bgcolor" id="app">
        <!-- 当点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建 -->
       <button-counter></button-counter>
       <button-counter></button-counter>
       <button-counter></button-counter>
    </div>
</body>
<script type="text/javascript">

    // 定义一个名为 button-counter 的新组件
    // 组件如果采用驼峰命名,上文使用时要转成“短横线+小写”
    // 组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等
    Vue.component("buttonCounter",{
        data:function(){
            return{
                count:0
            }
        },
        template:'<button v-on:click="count++"> You clicked me {{count}} times. </button>'
    })

    var vm = new Vue({
        el: '#app',
        // 数据
        data:{}
    });
</script>
</html>

效果:

在这里插入图片描述

2.基本示例(body中写主体)

<body>
    <!-- 注意template 书写位置 -->
    <template id="multiplication">
        <div>
            <input type="text" v-model="multiplierA" />
            <input type="text" v-model="multiplierB">
            <button @click="result = multiplierA*multiplierB">The anwser is {{ result }}</button>
        </div>
    </template>
    <div class="bgcolor" id="app">
        <div>
            <do-multiplication></do-multiplication>
        </div>
    </div>
</body>
<script type="text/javascript">
    Vue.component("doMultiplication",{
        data:function(){
            return{
                multiplierA: 0,
                multiplierB: 0,
                result: 0
            }
        },
        template: "#multiplication"
    })

    var vm = new Vue({
        el: '#app',
        // 数据
        data:{}
    });
</script>

效果:

在这里插入图片描述

4.注意

1.data 必须是一个函数

当我们定义这个 组件时,你可能会发现它的 data 并不是像这样直接提供一个对象:

data: {
  count: 0
}

取而代之的是,一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

data: function () {
  return {
    count: 0
  }
}

正是因为 Vue 有这条规则,所以上述示例才不会点击一个按钮影响到其它所有实例

2.组件是可复用的 <Vue 实例>

它们与 new Vue 接收相同的选项,例如 datacomputedwatchmethods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。


http://www.niftyadmin.cn/n/1486240.html

相关文章

QT的setwindowflags的属性总结

:setWindowFlags(Qt::CustomizeWindowHint&#xff09;;//设置窗口标题栏自定义 setWindowFlags&#xff08;Qt::WindowMinimizeButtonHint&#xff09;;//设置窗口的标题栏只有最小化的按钮 setWindowFlags( Qt::WindowCloseButtonHint &#xff09;;//设置窗口的标题栏只有关…

将多个word文件合并为一个的方法

1.将要合并的word文件放入一个文件夹&#xff08;方便后期一下子选中&#xff09;&#xff1b; 2.如果对合并后的文件有顺序要求的话&#xff0c;可以在名称开头编好序号123456&#xff0c;然后按名称排序&#xff1b; 3.新建空白word用于汇总,点击插入-对象-对象中的文字&am…

话里话外:基于知识管理的企业核心流程识别

在全球经济一体化与市场一体化的趋势下&#xff0c;我国企业的生存环境发生了巨大变化。一方面&#xff0c;国家进一步开放了原来相对封闭的业务市场&#xff1b;另一方面&#xff0c;各行业中有实力的企业进入中国内地&#xff0c;使得市场竞争更加激烈。为了在竞争中占有一席…

EF 多线程TransactionScope事务异常事务EFTransaction类定义:与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。...

解决方案代码一&#xff1a;使用lock锁定 //对于锁推荐使用静态私有静态变量 private readonly static object _MyLock new object(); /// <summary> /// 事务&#xff0c; 多表修改 /// </summary> /// <param name"name"></param&…

用 Java 通过串口发送手机短信(二)简单使用

先简单的来介绍一下如何使用 SMSLib 收发短信。SMSLib 的唯一的入口类是 CService 类&#xff0c;该类主要负责设置各种访问手机的参数&#xff0c;以及提供收发短信的功能。CService 类只有一个构造函数 CService(String port, int baud, String gsmDeviceManufacturer, Strin…

Linux 上 C 程序的内存布局

在仔细研究这个问题之前&#xff0c;我认为 C 程序在内存中只有代码段&#xff0c;堆和栈三部分构成。前几天面试被问到了这个问题&#xff0c;才发现自己的印象是不完全的。 在本文中通过解析析一个 C 程序中变量和函数的地址来分析 C 程序在内存中的布局。 首先简单介绍一下L…

moment解读常用操作及语句——subtract、add、calendar

官方文档&#xff1a;http://momentjs.cn/ 平常使用记住一句话&#xff1a;将来就是加add&#xff0c;曾经就是减subtract, 现在是moment()&#xff0c;复杂的加减可以使用链式 链式操作举例&#xff1a;moment().add(7, days).subtract(1, months) // 意思为当前日期加上7天再…

【js】值复制与地址复制——踩坑血泪史

简单记&#xff1a;number和string为值复制&#xff0c;数组和对象为地址复制。 js基本数据类型&#xff1a;String、Number、bollean、null、undefined&#xff0c;引用类型&#xff1a;object。 记录踩坑&#xff1a; bug复现&#xff1a; 查询后返回多页表格&#xff0c;此…