#咕咕咕咕咕咕咕咕#

本文章仅用作于个人学习笔记(蓝后我就可以乱写啦)复制代码

接上一文章 利用Vue-CLi实现一个简单的TodoList工具

一、组件化的优点

当TodoList的todo item越来越多的时候,我们应该把它拆分成一个组件进行开发,维护。组件的出现,就是为了拆分Vue实例的代码量,让我们以不同的组件,来划分成不同功能模块,然后拼接成一个完整的页面。将来需要怎样的功能,就去调对应的组件就好了。

目前我能理解的组件化开发的优点如下:

1) 提高开发效率。
2) 方便重复使用。
3) 提升可维护性。复制代码

插一张官方文档的图:

二、注册组件

在脚手架中我们选中使用 .vue单文件来开发。一个.vue文件中具有完整的 template(html)、script、style标签。

.vue的单文件可以获得:

1) 完整语法高亮
2) CommonJS 模块
3) 组件作用域的 CSS ( <style scoped></style> ) 复制代码

1.先创建一个TodoList.vue文件到components文件夹下,创建完后,我们需要在根组件App.vue中引入TodoList.vue并注册组件。

//导入的组件需要放入components中复制代码

查看是否引入成功:

2.接下来我们把之前的li标签的内容移植到TodoList.vue中。父子组件之间的通行我们使用props和$emit。

  • 子组件使用 props 来接收 父组件传来的值
  • 子组件使用 $emit 将事件和数据 发射出去。需要子组件数据的父组件添加一个自定义事件用来监听子组件

1)在父组件(App.vue)的todo-item中把数据“绑定到”自定义属性 :content(item的文字) , :time(item的创建时间), :index(数组的下标),并添加事件@delect监听子组件的事件

<todo-itemv-for="(item,index) in list":key="index":content="item.text":time="item.time":index="index"@delect="handleDelect"></todo-item>
复制代码

2)子组件(TodoList.vue)通过props来接收父组件传来的数据渲染页面。创建点击事件调用方法handleDelect方法,方法中使用 $emit 将下标index发射出去(父组件接收用来删除对应的item)

<template><li><div>{{content}}</div><small><span>创建于:{{time}}</span></small><button @click="handleDelect">删除</button></li>
</template>
<script>
export default {props: ["content", "time", "index"],methods: {handleDelect() {this.$emit("delect", this.index);}}
};
</script>
复制代码

完整代码:

App.vue

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><div><div><input type="text" placeholder="添加便签" v-model.trim="inputValue"><button @click="handleSubmit">添加</button></div><ul><!-- 把这个组件作为自定义元素来使用 --><todo-itemv-for="(item,index) in list":key="index":content="item.text":time="item.time":index="index"@delect="handleDelect"></todo-item></ul></div></div>
</template>
<script>
// import (引入文件的文件命名) from ("文件的路径")
import todolist from "./components/TodoList.vue";
export default {name: "app",// ("组件名"() : (引入文件的文件命名)components: {"todo-item": todolist},data() {return {inputValue: "",list: []};},methods: {handleSubmit() {if (this.inputValue != "") {this.list.push({text: this.inputValue,time: new Date().toLocaleString()});this.inputValue = "";}},handleDelect(index) {this.list.splice(index, 1);}}
};
</script>复制代码

TodoList.vue

<template><li><div>{{content}}</div><small><span>创建于:{{time}}</span></small><button @click="handleDelect">删除</button></li>
</template><script>
export default {props: ["content", "time", "index"],methods: {handleDelect() {this.$emit("delect", this.index);}}
};
</script><style scoped>
</style>复制代码

错误可能很多,但我现在还没看出来hhhhh

[今日白学]组件的基础的基础的基础相关推荐

  1. 云计算主要学些什么技术内容?零基础能学会吗?

    云计算主要学些什么技术内容?零基础能学会吗? 随着信息技术的不断发展,云计算作为一种新兴的技术,在当今社会中起到了越来越重要的作用,尤其是在数字化发展领域,不管是传统企业还是新经济领域,人工智能.大数 ...

  2. 学python的基础是什么-毫无基础的人如何入门 Python ?

    0716更新 Python可以做什么? Python的热度毋庸置疑,现在国内,不仅考国家二级计算机证需要学习Python,它甚至出现在了小学生的教材里. 那么高度如此高涨的Python,都可以用来做什 ...

  3. 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...

    原标题:要学Python编程,需要什么样的基础呢?想找这方面工作 作为一个初学Python的新手,如何学好这门语言,肯定经常是一头雾水. 那么,学好这门编程语言的基础是什么呢? 第一步,就是马上到网站 ...

  4. 零基础学python全彩版实战答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

  5. layuiadmin上手好难_新手自学板绘先学SAI还是PS好?零基础绘画入门需知!

    原标题:新手自学板绘先学SAI还是PS好?零基础绘画入门需知! 新手自学板绘先学SAI还是PS好?初学者如何入门绘画?学习板画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不 ...

  6. 数据仓库组件:Hive环境搭建和基础用法

    本文源码:GitHub || GitEE 一.Hive基础简介 1.基础描述 Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取.转化.加载,是一个可以对Hadoop中的大规模存储的数据进 ...

  7. hive后台启动_数据仓库组件:Hive环境搭建和基础用法

    一.Hive基础简介 1.基础描述 Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取.转化.加载,是一个可以对Hadoop中的大规模存储的数据进行查询和分析存储的组件,Hive数据仓库工 ...

  8. 零基础学sql要多久_成人零基础学习钢琴,要多久能学会?

    越来越多的人都开始在开始工作之后想要练习一门技艺了.不知道大家身边的朋友是不是也在报一些培训班,健身班,瑜伽班,舞蹈班.每个人都有自己向往的生活与目标,那学会钢琴,也慢慢变成了更多喜爱音乐的朋友的目标 ...

  9. 计算机病毒不会直接危害计算机用户的健康,北京语言大学入学测试机考(高起点)计算机基础模拟题...

    北京语言大学入学测试机考(高起点)计算机基础模拟题 1.下列几种存储器中,存取周期最短的是().(2)() A.内存储器 B.光盘存储器 C.硬盘存储器 D.软件盘存储器 标准答案:A 2.微型计算机 ...

最新文章

  1. PWA之push服务
  2. 鸿蒙系统怎么支持安卓应用,鸿蒙系统支持安卓软件吗-鸿蒙系统支持安卓应用吗...
  3. ISA三向外围网络模板说明
  4. css表格文字超数量就竖排_绝了,超轻量级中文 OCR,你值得拥有
  5. php无限极分类实例,PHP实例:PHP无限极分类
  6. Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
  7. Linux进行设置环境变量
  8. 【原】Spark中Master源码分析(一)
  9. 数据结构--散列表 Hash Table
  10. 一组PHP可逆加密解密算法
  11. oracle 启动_oracle实验--通过gdb工具研究数据库启动过程
  12. pyecharts世界地图map,geo可视化优化调整
  13. 用贪心算法求解最小生成树
  14. linux bttrack服务,给centos7上的aria2添加BT Tracker服务器
  15. java获取oracle自增_Oracle自增列创建方法
  16. 【Bugzilla】我按照bugzilla的官方指导进行的安装。(一)
  17. 企业网络中的防火墙旁挂实例
  18. rust 局域网联机_Steam上有哪些值得推荐的可以多人局域网联机的游戏?
  19. 那些年我们在spark SQL上踩过的坑
  20. 【大数据之路5-1】数据仓库工具 Hive

热门文章

  1. ios无痕埋点_掌握数据生命周期:初识数据埋点
  2. mysql客户端攻击_HackerNews
  3. javax包 rpc_javax.xml.rpc和javax.wsdl分别属于哪个jar包?
  4. java 中鼠标事件_[Java教程]js中鼠标事件总结
  5. stm32f4有重映射么_STM32管教复用与重映射关系
  6. go for 循环遍历数组并排序_Go语言基础教程:for循环语句
  7. 计算机开机不正常运行,win7 64位旗舰版电脑开机启动不正常怎么办
  8. php 怎么开启错误报告,总结PHP开启关闭错误报告示例代码以及PHP脚本不报错的原因...
  9. 织梦根目录感染abc.php,织梦SEO优化:织梦dedecms根目录下robots.txt文件设置详解! - 张俊SEO...
  10. java加载jdbc驱动,加载JDBC驱动