vue 学习四 了解组件

1组件的注册

全局注册

import Vue from ‘vue‘;
import com from ‘./component1‘;
Vue.component("com_name",com)//第一个参数是你为注册的组件定义一个id,第二个是你要注册的组件

局部注册

//在组件内
import com from "../components/a_component";
export default {
  name: "home",
  components: {
    com_name: com //com_name 是你为注册的组件定义一的id,它会成为在<template>中使用时的标签名,com要注册的组件
  }
}
<template>
  <div id="home">
   <com_name></com_name>
  </div>
</template>

2组件通讯

父组件传值给子组件 props

第一种

在子组件中使用props:[],将其定义成一个数组的方式

//父组件
<template>
  <div id="home">
    <input type="type" id="one" v-model.trim="picked" />
    <com test=‘12345‘></com> //在组件标签上添加一个属性 这里可以添加任意个 和任意种类型包括对象、数组甚至方法,如果是添加复杂类型 请使用:test的vue动态绑定语法,                             //像这种html语法支持number和string,复杂的如对象方法会识别不了
  </div>
</template>
//子组件
<template>
  <div class="a_component-wrap">
    <h1>
      {{test}} //使用
    </h1>
  </div>
</template>

<script>
export default {
  name: "AComponent",
  props:["test"] //只有在这里声明过的props才能像data里面的属性一样正常使用,添加多个[‘test‘,‘test1‘,‘test2‘,...],                 //假设父组件在子组件上定义了test1 test2两个props,而子组件声明了test1,那么子组件使用test2的时候会报出 not defined
};
</script>

第二种

在子组件中使用props:{}

export default {
  name: "AComponent",
  props:{
    test1:{
      type:Boolean, //提供一个类型检查 如果这里定义的是boolean,那么父组件传递过来的数据就只能是boolean,否则报错
      default:false //提供一个默认值,当父组件没有将test1传递过来的时候,子组件上test1的值会是false,它和type可以只有type 或只有default或都有
    }
  }
};

值得一提的是,为什么组件里的data会是一个function,这是为了保证在多个地方使用这个组件的时候,组件的实例是独立的,比如说,你有一个计时器组件,你在三个地方使用了它,第一个时间显示为20 第二个为10 第三个为0,这三个实例都是独立的,但如果组件中的data是一个对象,那么这三个实例就会都是一样的状态

原文地址:https://www.cnblogs.com/wrhbk/p/11664475.html

时间: 2024-08-30 18:25:36

vue 学习四 了解组件的相关文章

Vue学习系列(二)——组件详解

前言 在上一篇初识Vue核心中,我们已经熟悉了vue的两大核心,理解了Vue的构建方式,通过基本的指令控制DOM,实现提高应用开发效率和可维护性.而这一篇呢,将对Vue视图组件的核心概念进行详细说明. 什么是组件呢? 组件可以扩展HTML元素,封装可重用的HTML代码,我们可以将组件看作自定义的HTML元素. 为什么要用到组件呢? 为了可重用性高,减少重复性开发,让我们可以使用独立可复用的小组件来构建大型应用. 基本 一.组件注册 1.通过Vue.extend()创建,然后由component来

【前端小小白的学习之路】vue学习记录⑤(组件通信-父与子)

今天我们看一下组件通信. 经过前面几篇文章,我们已经可以构建出完整的单个组件,并利用路由使其串联起来访问了. 但这明显还是不够的.一个页面不可能就是个单组件,一般是由多个组件合成的.正因为如此,组件之间肯定是有相互关系的,我们就称这种现象叫组件通信. 比如父组件发生了某项改变,子组件会跟着相应发生变化:反过来,子组件有了某种改变,父组件有时也会随之做出调整.那么这种现象我们称之为双向数据流动. 然而,vue的作者敏锐的认识到,双向数据流带来便捷的同时,也存在着极大的安全隐患. 父组件将变化传递给

vue学习之父子组件通信两种方法

初学vue,最常用及实用的就是父子组件之间的通信了,在此记录一点自己的学习过程 方法一:props及$emit 父组件中先引入子组件,然后components里面注册组件,然后template里调用,调用的时候通过v-bind传递值给子组件,v-on监听子组件$emit传递过来的值 子组件中先用props接收父组件的传值,注意子组件中不可直接修改父组件的传值,可通过watch监听来赋值,通过$emit来传递值给父组件 方法二:ref 父组件传值props方法不变,父组件可通过使用ref来调用子组

vue学习之父组件与子组件之间的交互

1.父组件数据传给子组件 父组件中的msgfather定义数据 在之组件中通过设置props来取得希望从父组件中获得的值 通过设置这两个属性就可以从父组件传数据到子组件 2.子组件传数据给父组件(这里只介绍$emit) 触发child-tell-me事件,并传参 "this is child message!" 在父组件会找到child-tell-me方法并执行.

vue学习(四)

//html <div id="app"> <input type="button" value="ok" v-bind:title="msg"> <input type="button" value="ok" v-bind:title="msg +'123aaa' ">//也可以拼接字符串,渲染出来是 点击一下123aaa <

VUE学习四【自动获取提交的数据,生命周期】

<div id="demo"> <form @submit.prevent="handleSubmit"> <span>用户名:</span> <input type="text" v-model="user.username"> <br> <span>密码:</span> <input type="password

vue2.0学习(四)-实例和内置组件

vue2.0学习(四)-实例和内置组件 1.实例入门-实例属性 一.Vue和Jquery.js一起使用 下载可以去官网进行下载,我这里使用的版本是3.1.1,下载好后在需要的页面引入就可以了.当然你还有很多其它的方法引入jquery,只要可以顺利引入就可以了. <script type="text/javascript" src="../assets/js/jquery-3.1.1.min.js"></script> <!DOCTYPE

Vue学习笔记入门篇——组件的使用

本文为转载,原文:Vue学习笔记入门篇--组件的使用 组件定义 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 组件使用 注册 注册一个全局组件,你可以使用 Vue.component(tagName, options).组件在注册之后,便可以在父实例的模块中以自定义元素 的形式使用.

Vue学习笔记入门篇——组件的内容分发(slot)

本文为转载,原文:Vue学习笔记入门篇--组件的内容分发(slot) 介绍 为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板.这个过程被称为 内容分发 (或 "transclusion" 如果你熟悉 Angular).Vue.js 实现了一个内容分发 API,使用特殊的 'slot' 元素作为原始内容的插槽. 编译作用域 在深入内容分发 API 之前,我们先明确内容在哪个作用域里编译.假定模板为: <child-component> {{ messa