Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值

Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值Vue2.0传值方式:在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来。这时必然会产生一些疑问和需求?比如一个组件调用另一个组件作为自己的子组件,那么我们如何进行给子组件进行传值呢?如果是电商网站系统的开发,还会涉及到购物车的选项,这时候就会涉及到非父子组件传值的情况。当然你也可以用Vuex状态管理工具来实现,这部分我们后续会单独介绍。先给大家介绍Vue常见的三种传值方式

大家好,又见面了,我是你们的朋友全栈君。

Vue2.0 传值方式:

在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来。这时必然会产生一些疑问和需求?比如一个组件调用另一个组件作为自己的子组件,那么我们如何进行给子组件进行传值呢?如果是电商网站系统的开发,还会涉及到购物车的选项,这时候就会涉及到非父子组件传值的情况。当然你也可以用Vuex状态管理工具来实现,这部分我们后续会单独介绍。我先给大家介绍Vue开发中常用的三种传值方式。

Vue常用的三种传值方式有:

  • 父传子

  • 子传父

  • 非父子传值


引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示:

这里写图片描述

接下来,我们通过实例来看可能会更明白一些:

1. 父组件向子组件进行传值

这里写图片描述

父组件:

<template>
  <div>
    父组件:
    <input type="text" v-model="name">
    <br>
    <br>
    <!-- 引入子组件 -->
    <child :inputName="name"></child>
  </div>
</template>
<script> import child from './child' export default { components: { child }, data () { return { name: '' } } } </script>

子组件:

<template> <div> 子组件: <span>{ 
   { 
   inputName}}</span> </div> </template> <script> export default { // 接受父组件的值 props: { inputName: String, required: true } } </script>

2. 子组件向父组件传值

这里写图片描述

子组件:

<template> <div> 子组件: <span>{ 
   { 
   childValue}}</span> <!-- 定义一个子组件传值的方法 --> <input type="button" value="点击触发" @click="childClick"> </div> </template> <script> export default { data () { return { childValue: '我是子组件的数据' } }, methods: { childClick () { // childByValue是在父组件on监听的方法 // 第二个参数this.childValue是需要传的值 this.$emit('childByValue', this.childValue) } } } </script>

父组件:

<template> <div> 父组件: <span>{ 
   { 
   name}}</span> <br> <br> <!-- 引入子组件 定义一个on的方法监听子组件的状态--> <child v-on:childByValue="childByValue"></child> </div> </template> <script> import child from './child' export default { components: { child }, data () { return { name: '' } }, methods: { childByValue: function (childValue) { 
      // childValue就是子组件传过来的值 this.name = childValue } } } </script>

3. 非父子组件进行传值

非父子组件之间传值,需要定义个公共的公共实例文件bus.js,作为中间仓库来传值,不然路由组件之间达不到传值的效果。

公共bus.js

//bus.js
import Vue from 'vue'
export default new Vue()

组件A:

<template> <div> A组件: <span>{ 
   { 
   elementValue}}</span> <input type="button" value="点击触发" @click="elementByValue"> </div> </template> <script> // 引入公共的bug,来做为中间传达的工具 import Bus from './bus.js' export default { data () { return { elementValue: 4 } }, methods: { elementByValue: function () { 
      Bus.$emit('val', this.elementValue) } } } </script>

组件B:

<template> <div> B组件: <input type="button" value="点击触发" @click="getData"> <span>{ 
   { 
   name}}</span> </div> </template> <script> import Bus from './bus.js' export default { data () { return { name: 0 } }, mounted: function () { 
      var vm = this // 用$on事件来接收参数 Bus.$on('val', (data) => { console.log(data) vm.name = data }) }, methods: { getData: function () { 
      this.name++ } } } </script>

☺ Vue三种常用的传值方式就介绍完了,如果有什么不明白的,可以在评论区留言哦!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145233.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jmeter性能测试(一)性能测试关键指标解析

    Jmeter性能测试(一)性能测试关键指标解析一、性能测试关键指标解析1、响应时间多–并发量快–延时、响应时间好–稳定性(长时间运行)省–资源利用率响应时间:对请求作出响应所需要的的时间,是用户感知软件性能的主要指标。响应时间包括:1.用户客户端呈现时间2.请求/响应数据网络传输时间3.应用服务器处理时间4.数据库系统处理时间响应时间多少合理?对于一个Web系统,普遍接受的响应时间标准为2/5/8秒(2秒–非常好;5秒–可接受;8秒是上限)2、并发用户数用户…

    2022年6月17日
    132
  • 菜地公告:元宵节《菜农新唐M0技术交流群》有条件散群预告

    菜地公告:元宵节《菜农新唐M0技术交流群》有条件散群预告菜地公告:菜农助学园地500人支柱群菜农新唐M0技术交流群:12047788长期致力于纯技术交流,与菜农助学群校:134915667一同奉行“饮水思源”之精神。菜农为了网友的合法权宜得到公正的待遇,特此做出如下沉痛之决议:在元宵节晚上8:25以前,若链接:http://bbs.ednchina.com/BLOG_ARTICLE_3001363.HTM中的“发表评论”少于

    2022年5月19日
    31
  • CImage 缩放图片

    CImage 缩放图片BOOLCreateStretchImage(constCImage&src,CImage&dest,intstretchWidth,intstretchHeight){if(src.IsDIBSection()){dest.Create(stretchWidth,stretchHeight,32);HDCdestDC=dest.GetDC();::SetStretchBltMode.

    2022年6月23日
    37
  • vue.js 渲染函数_Vue.js的不可渲染且可扩展的RTF编辑器[通俗易懂]

    vue.js 渲染函数_Vue.js的不可渲染且可扩展的RTF编辑器[通俗易懂]vue.js渲染函数轻按(tiptap)Arich-texteditorforVue.js.Vue.js的富文本编辑器。Viewdemo查看演示DownloadSource下载源什么是无renderless?(Whatmeansrenderless?)Withrenderlesscomponentsyou’llhave(almost)…

    2025年10月25日
    3
  • virsh强制关闭虚拟机_kvm创建虚拟机

    virsh强制关闭虚拟机_kvm创建虚拟机virsh可以通过reboot、shutdown来重启或关闭对应的虚拟机。由于其原理是host通过发送acpi指令来控制虚拟机的电源,如果guest系统没有安装acpi服务器或该服务器没有启动,那么虚拟机将不会重启或关闭,那么只有使用destroy来强制关闭。安装acpid服务centos系统yuminstallacpidubuntu系统apt-getinstallacp…

    2022年8月11日
    7
  • c++中无法打开源文件_无法打开源文件iostream

    c++中无法打开源文件_无法打开源文件iostream一、无法打开文件“xxx.lib”出现这种错误一般为①未添加xxx.lib库文件②库添加后,路径不对,找不到对应的库文件路径解决方案:先查看库文件是否已经添加若未添加,右击项目->属性->链接器->输入;将库文件加入即可如果库文件已经添加,仍然报错,此时需要查看生成的库文件的路径了。先找到生成库文件的路径,右击项目->属性->常规->查看输出目录是否与生成的库文件的路径是否匹配,若不匹配,修改路径即可。二、无法打开源文件说明是库的附加包含路径有问题

    2022年10月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号