Vue的子父组件传值之小白必看篇

目录
  • 搭建的框架目录结构
  • 一、父传子动图效果及源码
    • 父传子源码
  • 二、子传父动图效果
    • 子传父源码
  • 三、详细解说组件传递过程:组件传值模板
    • 1.父--->子
      • ①属性props
      • ②引用refs传值
    • 2.子--->父
      • ①属性emit

搭建的框架目录结构

一、父传子动图效果及源码

父传子源码

父组件:

<template>
  <div>
    <div>
      <p v-html="theCardTitle"></p>
      <button @click="sendMessage">OK</button>
    </div>
    <div>
      <ChildCard :parentMessage="parentMessage"></ChildCard>
    </div>
  </div>
</template>
<script>
import ChildCard from "../sub/ChildCard";
export default {
  data() {
    return {
      theCardTitle: "父组件",
      parentMessage: ""
    };
  },
  components: {
    ChildCard
  },
  methods: {
    sendMessage() {
      this.parentMessage = "<b>消息来自父组件:</b> (^_^)!";
    }
  },
};
</script>

子组件:

<template>
  <div>
    <div>
      <p v-html="theCardBody"></p>
      <div v-html="parentMessage"></div>
    </div>
  </div>
</template>
<script>
export default {
  props: ["parentMessage"],
  data() {
    return {
      theCardBody: "子组件"
    };
  }
};
</script>

二、子传父动图效果

子传父源码

父组件:

<template>
  <div>
    <div>
      <p v-html="theCardTitle"></p>
      <span>{{parentMessage}}</span>
      <ChildCardOne @childByValue="childByValue"></ChildCardOne>
    </div>
  </div>
</template>
<script>
import ChildCardOne from "../sub/ChildCardOne";
export default {
  data() {
    return {
      theCardTitle: "父组件",
      parentMessage: ""
    };
  },
  components: {
    ChildCardOne
  },
  methods: {
    childByValue(childValue) {
      this.parentMessage = childValue;
    }
  }
};
</script>

子组件:

<template>
  <div>
    <p v-text="theCardTitle"></p>
    <span>{{childValue}}</span>
    <div>
      <button @click="ok">OK</button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      theCardTitle: "子组件",
      childValue: "我是子组件的数据"
    };
  },
  methods: {
    ok() {
      this.$emit("childByValue", this.childValue);
    }
  }
};
</script>

三、详细解说组件传递过程:组件传值模板

也可以说这部分的内容是将组件的传递过程的关键代码给抽离出来了,帮助大家更好的理解如何使用传值!

1.父--->子

①属性props

子组件利用props接收父组件传递过来的数据

指的是从外部设置的属性,需子组件设置props属性

注意:

props严格用于父组件与子组件之间的单向通讯,并且你不希望尝试直接在子组件中更改props的值。

否则,将收到类似这样的错误信息“避免直接修改某个prop,因为当父组件重新渲染时,该值将被覆盖” 这样的错误。

父组件:

1.点击事件进行传值,在template中添加组件

<button @click="OK">给子组件发送一个消息</button>

2.父组件自定义方法将data里的数据传递过去:

<子组件名称 :自定义事件="绑定的方法"></子组名称>

data() {
    return {
      自定义事件: ""
    };
  },

3.引用子组件:

import 子组件名称 from "子组件路径";

4.注册子组件,注册位置与methods同级:

components: {
    子组件名称
  },

5.在methods中写入点击事件

methods: {
    OK() {
      this.自自定义事件 = "传递过去的数据";
    }
  }

子组件:

1.定义个插糟,接收渲染传递过来的数据

<div v-html="自定义事件"></div>

1.接收父组件传递过来的值

<script>
export default {
  props: ["自定义事件"],
};

②引用refs传值

父组件通过refs给子组件传值

父组件:

1.引用子组件:

import 子组件名称 from "子组件路径";

2.注册子组件,注册位置与methods同级:

components: {
    子组件名称
  },

3.看你是什么需求了,什么需求写在什么函数下:

周期函数(){this.$refs.父组件名称.子组件名称=“传递的参数”}

4.声明父组件名称:

<子组件名称 ref=“父组件名称”></子组件名称>

子组件:

1.声明子组件:

<组件名称>子组件名称</组件名称>

2.将子组件名称定义到data中:

data(){return{子组件名称:}}

2.子--->父

①属性emit

子组件:

1.利用插值表达式显示传递过去的数据:

<span>{{子组件数据}}</span>

2.将变量定义到data中

export default {
  data() {
    return {
      子组件数据: "子组件的数据"
    };
  },
}

3.点击事件进行传值,在template中添加组件:

<button @click="ok">OK</button>

4.向父组件传值,在methods下定义事件:

methods: {
    ok() {
      this.$emit("自定义事件", this.子组件数据);
    }
  }
};

父组件:

侦听自定义事件

1.利用插值表达式,将子组件传递过来的数据显示出来

<span>{{插值表达式}}</span>

2.将变量自定义到data中

export default {
data() {
    return {
      插值表达式: ""
    };
  },
};

3.父组件自定义方法侦听子组件传过来的值:

<子组件名称 @自定义事件="绑定的方法"></子组名称>

4.引用子组件:

import 子组件名称 from "子组件路径";

5.注册子组件,注册位置与methods同级:

components: {
    子组件名称
  },

6.在methods中侦听子组件传过来的值:

methods: {
    自定义事件(子组件数据) {
      this.插值表达式 = 子组件数据;
    }
  }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Vue之父子组件传值

    一.简要介绍 父子组件之间的传值主要有三种:传递数值.传递方法.传递对象,主要是靠子组件的 props 属性来接收传值,下面分别介绍: (一)传递数值 1.子组件:Header.vue <template> <div> <!-- data对象里并没有 msg 属性,这里调用的是父类传递过来的 msg 属性 --> <h2>{{msg}}</h2> </div> </template> <script> expo

  • vue 组件间的通信之子组件向父组件传值的方式

    父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:com-b要获取父组件data中的name属性: 在<com-b :name="name"></com-b> 使用v-bind 绑定name属性,红色部分为属性名称,可以随意写. 在子组件定义部分里添加选项,值是个字符串数组 props:['name'],将上边红色的属性名称写在这里: 之后就

  • VUE子组件向父组件传值详解(含传多值及添加额外参数场景)

    一.子组件向父组件传递一个值 子组件: this.$emit('change', this.value); 父组件: <!-- 在父组件中使用子组件 --> <editable-cell :text="text" :inputType="inputType" @change="costPlannedAmountChange($event)" /> // 事件处理函数 async costPlannedAmountChang

  • Vue中父组件向子组件传递数据的几种方法

    最近在学习vue的源码,总结了几种vue中父子组件传递数据的方法. 1.props & event 父组件向子组件传递props数据,子组件通过触发事件向父组件回传数据,代码如下: //子组件 <template> <div @click="changeName('YYY')">{{name}}</div> </template> <script> export default{ props:['name'],//or

  • Vue的子父组件传值之小白必看篇

    目录 搭建的框架目录结构 一.父传子动图效果及源码 父传子源码 二.子传父动图效果 子传父源码 三.详细解说组件传递过程:组件传值模板 1.父--->子 ①属性props ②引用refs传值 2.子--->父 ①属性emit 搭建的框架目录结构 一.父传子动图效果及源码 父传子源码 父组件: <template>   <div>     <div>       <p v-html="theCardTitle"></p&g

  • vue2.X组件学习心得(新手必看篇)

    VUEJS学习网址:https://cn.vuejs.org/ 此文章是用来记录自己的学习和实践心得. 关注点:父子组件之间的通信 看图说话: Pass Props 子组件本身与父组件是孤立的,通过子组件中显示声明的props属性,接收父组件数据; 父组件的数据更新时,子组件的prop会跟着更新: 此数据流动是单向的(看着); Emit Events 子组件使用$.emit(fn)向外抛出自己的内部触发的事件; 父组件是否监听?如果父组件需要监听,使用v-on绑定监听,触发对应事件; 以上为通用

  • vue子父组件通信的实现代码

    之前在用vue写子父组件通信的时候,老是遇到问题!!! 子组件传值给父组件: 子组件:通过emit方法给父组件传值,这里的upparent是父组件要定义的方法 模板: <div v-on:click="switchViewBtn">切换视图</div> 在data中定义:switchStatus = true; 方法: switchViewBtn(){ let that=this; this.$emit("parentView",that.s

  • vue 子组件向父组件传值方法

    子组件注册触发事件,父组件注册 触发子组件事件后的方法写在method里面 父组件这么写 <component-a v-on:child-say="listenToMyBoy"></component-a> <p>Do you like me? {{childWords}}</p> methods: { listenToMyBoy: function (somedata){ this.childWords = somedata } } 子

  • vue 父组件给子组件传值子组件给父组件传值的实例代码

    父组件如何给子组件传值 使用props 举个例子: 子组件:fromTest.vue,父组件 app.vue fromTest.vue <template> <h2>{{title}}</h2> //title必须是父组件传递的 </template> <script> export default (){ props:["title"] //可以是数组,也可以是对象 //如何对title进行校验 //props:{ // t

  • Vue实现的父组件向子组件传值功能示例

    本文实例讲述了Vue实现的父组件向子组件传值功能.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 父组件向子组件传值</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></scrip

  • vue 子组件和父组件传值的示例

    一.子组件向父组件传值 1:子组件中(例:) 2:父组件中(例:) 二.父组件向子组件传值 1:父组件中(例:) 2:子组件中(例:) 以上就是vue 子组件和父组件传值的示例的详细内容,更多关于vue 子组件和父组件传值的资料请关注我们其它相关文章!

  • 分享Vue子组件接收父组件传值的3种方式

    目录 1.简单声明接收 2.接收数据的同时进行 类型限制 3.接收数据的同时对 数据类型.必要性.默认值 进行限制 父组件代码↓ <template>     <div>         <div>父组件</div>         <Student :name="name" :age="age"></Student>     </div> </template> <

随机推荐