感觉自己即将完全步入前端大军,后台老板都不需要我弄了,塞翁失马。。。时间会告诉我们是好是坏

好了言归正传,最近vue是搞的不亦乐乎啊,下面来总结一下vue组件间的各种使用方法以及一些技巧

----------------------------------------------------------------------

1.父组件如何向子组件传参数

<div id="app">
<!-- 传递静态值 --这里firstBlood为什么要写成first-blood上一篇已经说明 -->
<son-demo first-blood="参数值"></son-demo>
<!-- 传递动态值 -->
<son-demo :first-blood="giveSon"></son-demo>
<!-- 如果要直接传递Boolean值 --这里的true会被直接解析成true而不是字符串 -->
<son-demo :first-blood="true"></son-demo>
</div> <script type="text/x-template" id="sonModel">
<h1>{{firstBlood}}</h1>
</script> <script>
//定义子组件
var sonDemo = {
template: "#sonModel",
props:['firstBlood'],
data(){
return {};
},
}
//父组件
new Vue({
el: '#app',
components: {
sonDemo //也可以这样写 sonDemo: sonDemo
},
data: {
giveSon:'给儿子的值'
}
});
</script>
注意:vue不推荐直接在子组件中修改父组件传来的props的值,会报错

[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "" (found in component )

如果要修改,在子组件里定义一个新变量来接收↓

data(){

return {
getFirstBlood: this.firstBlood //通过data, 定义新变量getFirstBlood, 这样getFirstBlood的值变更时,不会影响父组件传来的firstBlood的值
}

}

还有如果传递的参数是数组类型的话,子组件是可以直接对其进行操作的,同时父组件里的数组也会跟着变,如果不想污染初始值最好还是新定义一个变量接收

2.父组件向子组件传值时对传递的参数进行类型验证,如果没传给个默认值

type 可以是下列原生构造函数中的一个:String、Number、Boolean、Array、Object、Date、Function、Symbol

<div id="app">
<!-- 传递动态值 -->
<son-demo :show-or-del="isshow" :first-blood="giveSon"></son-demo>
</div> <script type="text/x-template" id="sonModel">
<h2 v-if="showOrDel"></h2>
<h1>{{firstBlood}}</h1>
</script> <script>
//定义子组件
var sonDemo = {
template: "#sonModel",
props: {
showOrDel: {
type: [Boolean, Number],
required: true
},
firstBlood: {
type: String,
required: '默认值'
}
},
data(){
return {};
},
}
//父组件
new Vue({
el: '#app',
components: {
sonDemo //也可以这样写 sonDemo: sonDemo
},
data: {
isshow: false,
giveSon:'给儿子的值'
}
});
</script>

3.子组件如何向父组件传递参数   关键词$emit

<div id="app">
<son-demo @giveFatherInfo="getSonInfo"></son-demo>
</div> <script type="text/x-template" id="sonModel">
<button @click="giveDad">点击给父亲传值</button>
</script> <script>
//定义子组件
var sonDemo = {
template: "#sonModel",
data(){
return {
idValue:'123445'
};
},
methods: {
giveDad(){
this.$emit('giveFatherInfo', this.idValue);
}
}
}
//父组件
new Vue({
el: '#app',
components: {
sonDemo //也可以这样写 sonDemo: sonDemo
},
data: {
userid: ''
},
methods: {
getSonInfo(v) {
this.userid = v;
},
},
});
</script>

欢迎大家来讨论技术,相互学习

vue的父子组件间的相互传参props及props数据的多种验证机制的更多相关文章

  1. 041——VUE中组件之pros数据的多种验证机制实例详解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题

    1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法    父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...

  3. vue之父子组件间通信实例讲解(props、$ref、$emit)

       组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 组件是 vue.js 最强大的功能之一,而组件实例 ...

  4. Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. vue非父子组件间传参问题

    最近在使用vue进行开发,遇到了组件之间传参的问题,此处主要是针对非父子组件之间的传参问题进行总结,方法如下:一.如果两个组件用友共同的父组件,即 FatherComponent.vue代码 < ...

  6. 【vue】父子组件间通信----传值

    官方文档参考 (一)父组件 向 子组件 传值 ①在父组件中调用子组件处,绑定要传的数据data1, 如 <nav  :data1=" "  ></nav> ...

  7. 应用六:Vue之父子组件间的三种通信方式

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 组件是Vue的核心功能之一,也是我们在开发过程中经常要用到的.各个独立的组件之间如何进行数据 ...

  8. 简述vue中父子组件是怎样相互传递值的(基础向)

    前言 首先,你需要知道vue中父组件和子组件分别指的是什么?   父组件:vue的根实例——用new Vue()构造函数创建的vue实例(实例会有一个挂载点,挂载点里的所有内容可理解为父组件的内容) ...

  9. 【vue】父子组件间通信----传函数

    (一)子组件 调用 父组件 方法 方式一) 子组件中通过this.$parent.event来调用父组件的方法 父组件 <template> <div> <child&g ...

随机推荐

  1. bzoj 2002 弹飞绵羊 分块

    正解lct,然而本蒟蒻并不会.... 分块思路很清晰,处理出每个点弹出所在块所需要的步数及出去后的第一个位置 #include<cstdio> #include<cstring> ...

  2. 【转】APP功能测试要领

    也许大家从事APP功能测试已经有一段时间了,心中一定有一个疑问,怎么样才能提高测试的覆盖面呢,我今天把APP功能测试内容分为APP本身的功能,APP关联的事务.APP外部环境.APP其他四大块来给大家 ...

  3. Quartz定时调度在Web中的应用

    1.在数据库中建一个job表和job日志表 job表

  4. 【SAP HANA】SAP HANA开篇(1)

    有幸当前工作能够接触到SAP S/4,能够接触到史上无敌的HANA内存数据库.HANA的技术我就不多讲了,感兴趣的人可以去百度一下.当然,有人想在本机安装HANA来学习,但前提是你得有128G内存以上 ...

  5. 设计模式-策略模式(strategy pattern)

    来说说设计模式吧,最近开始看设计模式,觉得挺有意思的.设计模式网上的资料的挺多的,而且大部分是大家相互转来转去的.感觉也挺没有意思.我就自己写一点吧! 开始 学习设计模式,我会用自己的画的UML类图来 ...

  6. Logistic回归二分类Winner or Losser----台大李宏毅机器学习作业二(HW2)

    一.作业说明 给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(0.1分类). 训练集介绍: (1)CSV文件,大小为4000行X5 ...

  7. 『性能』测试一下 MSSqlHelper 的性能

    本文没啥技术含量,就是测试一下 MSSqlHelper 在 使用反射.不使用反射 的性能对比. 之后,不要问为什么不用 ORM 这类的东西 —— 会有另外的文章 介绍 自己这些年 自己的ORM 升级历 ...

  8. Wmyskxz文章目录导航附Java精品学习资料

    前言:这段时间一直在准备校招的东西,所以一晃眼都好长时间没更新了,这段时间准备的稍微好那么一点点,还是觉得准备归准备,该有的学习节奏还是要有..趁着复习的空隙来整理整理自己写过的文章吧..好多加了微信 ...

  9. 第14章 纪元时间转换 - IdentityModel 中文文档(v1.0.0)

    JWT令牌使用所谓的Epoch或Unix时间来表示日期/时间. IdentityModel包含用于DateTime和DateTimeOffset转换到/来自Unix时间的扩展方法: var dt = ...

  10. ParameterizedType理解笔记

    首先分享这篇文章<ParameterizedType详解> https://blog.csdn.net/JustBeauty/article/details/81116144 Parame ...