我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

搭建的框架目录结构

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

父传子源码

父组件:

<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.插值表达式 = 子组件数据;
    }
  }

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue之父组件向子组件传值并改变子组件的样式

这篇文章主要介绍了vue之父组件向子组件传值并改变子组件的样式,需要的朋友可以参考下
2022-12-24

Vue父子组件传值的三种方法

这篇文章主要介绍了Vue父子组件传值的三种方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-20

Vue子组件向父组件传值的方法是什么

这篇文章主要介绍了Vue子组件向父组件传值的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue子组件向父组件传值的方法是什么文章都会有所收获,下面我们一起来看看吧。一、要点概述子组件:通过某种事件(
2023-07-05

vue子组件怎么使用父组件传过来的值

本篇内容主要讲解“vue子组件怎么使用父组件传过来的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue子组件怎么使用父组件传过来的值”吧!子组件使用父组件传过来的值父组件
2023-06-29

vue父子组件之间的传参的几种方式小结

本文主要介绍了vue父子组件之间的传参的几种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-18

Vue子组件接收父组件传值的方式有哪些

这篇文章给大家分享的是有关Vue子组件接收父组件传值的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。父组件代码↓