Vue基础组件
本文章仅用作于个人学习笔记(蓝后我就可以乱写啦)复制代码
一、组件化的优点当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-item v-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"> <div> <div> <input type="text" placeholder="添加便签" v-model.trim="inputValue"> <button @click="handleSubmit">添加</button> </div> <ul> <!-- 把这个组件作为自定义元素来使用 --> <todo-item v-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
Vue基础组件的更多相关文章
- vue基础-组件&插槽
组件 组件化的意义:封装(复用,把逻辑隐藏起来,提高可维护性),快速开发(搭积木) 约定:我们通常把那些除了HTML标签以外的自定义组件,才称为'组件',结论是,我们说"父组件"& ...
- vue基础——组件基础
一.基本示例 这里有一个Vue组件的示例: // 定义一个名为 button-counter 的新组件 main.js Vue.component('button-counter', { data: ...
- vue基础——组件(组件嵌套)
介绍 vue中页面是由组件组成的,即以.vue结尾的文件. .vue文件由三部分组成,分别是template.script.style. 分别写html.js.css代码. 组件之间可以互相嵌套.所以 ...
- vue基础----组件通信(props,$emit,$attrs,$listeners)
一.父传子,子传孙 1. props 1>在父组件中通过子组件自定义的标签属性来传递数据. 2>在子组件中通过props声明希望用到的数据 <body> <div id= ...
- vue基础----组件通信($parent,$children)
1.按照dom的父子级关系,在子组件中可以通过$parent 直接调用父组件的方法,也可得到父组件的属性. 2.在父组件中通过$childrens可以得到一个子组件数组,能够在父组件中调用子组件的方法 ...
- vue 基础: 组件
2.局部组件: 动态组件:
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明
缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...
- Vue – 基础学习(2):组件间 通信及参数传递
Vue – 基础学习(2):组件间 通信及参数传递
- 四、vue基础--自定义组件
1.语法:Vue.component("组件名字",{data,template}),代码如下: a. data: 必须是一个函数,有一个返回值.和vue里面的使用方法一样 b. ...
随机推荐
- 八十三:redis之redis的字符串、过期时间、列表操作
字符串操作 设置值 set key value 设置有空格的值,加引号 set username 'hello world' 获取值 get key 删除值:del key 清除所有内容:flusha ...
- vuex 使用
一.什么是Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化 二. 为什么要使用Vuex ...
- 根据json生成java实体类
之前一篇讲过了XML转java实体对象,使用的是JAXB技术,今天给大家推荐一个在线转json到java实体对象: http://www.bejson.com/json2javapojo/new/ 转 ...
- java文件分片上传,断点续传
百度的webUploader的前端开源插件实现的大文件分片上传功能 前端部分 前端页面代码如下,只需要修改自己的文件上传地址接口地址: <!DOCTYPE html> <html l ...
- Spring集成CXF获取HttpServletRequest,HttpServletResponse
最近的项目中,在Spring继承CXF中要用到request来获取IP,所以先要获取到HttpServletRequest对象,具体方法如下: 1.配置文件: <jaxrs:server id= ...
- redis 之django-redis
redis之django-redis 自定义连接池 这种方式跟普通py文件操作redis一样,代码如下: views.py import redis from django.shortcuts i ...
- bazel编译im2txt的问题
问题: 原本可以正常运行的程序,出现找不到tensorflow的问题.打印出来sys.version和sys.path,发现python版本并不是conda环境的版本 (tensorflow) yua ...
- httplib/urllib实现
httplib模块是一个底层基础模块,可以看到建立HTTP请求的每一步,但是实际的功能比较少.在python爬虫开发中基本用不到 下面详细介绍httplib提供的常用类型和方法: httplib.HT ...
- 【TypeScript】学习笔记 把一些需要记的记录一下
安装typescript: npm install -g typescript 启动typesctipt自动编译: tsc 文件名.ts --watch 函数参数默认值: 1.有默认值参数的,声明在最 ...
- python基础 --- 难点重点
循环嵌套 # 打印九九乘法表 for row in range(1,10): # 行与列相乘 for col in range(1,row+1): print(col,'*',row,'=',row ...