分享Vue组件传值的几种常用方式(二)

 更新时间:2022年09月13日 11:28:06   作者:可可西里的贝贝​​​​​​​  
这篇文章主要介绍了分享Vue组件传值的几种常用方式,文章围绕主题斩开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言

大家好,在上一篇文章分享Vue组件传值的几种常用方式(一)中我们介绍了父组件向子组件传值的相关流程,今天我们主要来学习子组件如何向父组件传值。子向父传值涉及到的方法的核心是 “$.emit” , 我们将利用这一方法来实现既定目标。

子向父传值

子向父传值意思就是要把子组件里的值传递给父组件,方法在子组件的methods模块中利用$.emit,其内部我们再来定义一个事件名和所要传递的值。

目标:在子组件内的输入框中输入的值,会显示在父组件文本的相应区域

示例:

一 文件配置及模板生成

关于vue文件的格式上一篇文章中已经讲过,这里就不详细讲了,这里稍微讲一下文件的导入导出以及操作main.js文件等。

第一步,在Father组件和Son组件中快速生成模板,并将Son.vue导入进Father中完成注册,再使用Son组件的实例

<template>
  <div class="box2">
    <Son></Son>    
  </div>
</template>

<script>
import Son from '@/components/Son.vue'
export default {
  components: {
    Son,
  },
}
</script>

<style lang="less"></style>

第二步,完善main.js文件,因为编译器在这里解析文件是从main.js开始的

到此我们完成了文件的基本配置,下面我们就正式开始学习子向父传值

二 Son组件内部处理

首先我们在Son组件中的template模板中完善ul结构,我们需要在名为box的dix盒子内部创建一个输入框,然后为它绑定一个input事件,方法名为SonSend,里面传递一个参数,获取到我们在输入框中输入的值

既然我们在上文提到需要利用this.$emit来进行传值,那么接下来我们就在methods方法中定义一个名为SonSend的方法

注意此时参数e就是输入框中输入的值,我们需要把这个参数e传递给父组件中,而前面的 ‘Accept’ 字符串就是我们要传递给父组件并且在Son实例上定义的事件名,这里的this指向的是这个export default导出模块

三 Father组件内部处理

那在Father父组件中,我们需要在实例Son身上注册一个Accept事件,方法名设置成Result。接着我们要在父组件的导出模块中定义一个data数据,属性名为res,值为0,并且我们要在template中定义一个h1标签,在其内部创建一个插值表达式,用来显示我们是否已经正确的拿到子组件传递过来的值

date数据:

现在我们需要在父组件的methods中定义一个Result方法,内部接收一个val参数,这个参数就是子组件传递过来的数据。在函数体内,我们把val参数的值赋值给res,这样我们就完善了res值的更改条件

接着我们运行"npm run serve"来查看页面上的内容

这样一来我们就完成了子组件向父组件的值传递过程

总结

  • 子组件的传递的核心重点是子组件内部的this.emit('要传递的事件名', this.xxx)
  • 在父组件中我们需要给子组件实例身上绑定事件,而不是其他地方,注意事件名是子组件传递过来的那组字符串
  • 需要在父组件内部的methods中定义方法,改变data数据源的值,实现原有数据的覆盖
  • 方法中的参数就是子组件传递过来的值,在本案例中就是我们输入的值

代码

Father.vue

<template>
  <div class="box2">
    <Son @Accept="Result"></Son>
    <h1>Father: 子组件传递过来的值是 ---{{ res }}</h1>
  </div>
</template>

<script>
import Son from '@/components/Son.vue'

export default {
  components: {
    Son,
  },

  data() {
    return {
      res: 0,
    }
  },

  methods: {
    Result(val) {
      this.res = val
      console.log(val)
    },
  },
}
</script>

<style lang="less"></style>

Son.vue

<template>
  <div class="box">
    Son:
    <input
      type="text"
      placeholder="请输入您想传递的值"
      @input="SonSend($event.target.value)"
    />
  </div>
</template>

<script>
export default {
  methods: {
    SonSend(e) {
      this.$emit('Accept', e)
      console.log(e)
    },
  },
}
</script>

<style lang="less"></style>

到此这篇关于分享Vue组件传值的几种常用方式(二)的文章就介绍到这了,更多相关Vue组件传值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • antd vue表格可编辑单元格以及求和实现方式

    antd vue表格可编辑单元格以及求和实现方式

    这篇文章主要介绍了antd vue表格可编辑单元格以及求和实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue实现牌面翻转效果

    Vue实现牌面翻转效果

    这篇文章主要为大家详细介绍了Vue实现牌面翻转效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Ant design vue table 单击行选中 勾选checkbox教程

    Ant design vue table 单击行选中 勾选checkbox教程

    这篇文章主要介绍了Ant design vue table 单击行选中 勾选checkbox教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue中transition标签的基本使用教程

    Vue中transition标签的基本使用教程

    Vue提供了transition的封装组件,可以给任何元素和组件添加进入/离开过渡,下面这篇文章主要给大家介绍了关于Vue中transition标签基本使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Vue.js 插件开发详解

    Vue.js 插件开发详解

    本文会通过一个简单的vue-toast插件,来帮助了解掌握插件的开发和使用。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • element中el-table局部刷新的实现示例

    element中el-table局部刷新的实现示例

    本文主要介绍了element中el-table局部刷新的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • vue elementui 实现搜索栏子组件封装的示例代码

    vue elementui 实现搜索栏子组件封装的示例代码

    这篇文章主要介绍了vue elementui 搜索栏子组件封装,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 详解从Vue.js源码看异步更新DOM策略及nextTick

    详解从Vue.js源码看异步更新DOM策略及nextTick

    本篇文章主要介绍了从Vue.js源码看异步更新DOM策略及nextTick,具有一定的参考价值,感兴趣的小伙伴们可以参考一
    2017-10-10
  • 深入理解与使用keep-alive(配合router-view缓存整个路由页面)

    深入理解与使用keep-alive(配合router-view缓存整个路由页面)

    这篇文章主要介绍了深入理解与使用keep-alive(配合router-view缓存整个路由页面),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue.js快速入门实例教程

    Vue.js快速入门实例教程

    vue是法语中视图的意思,Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。这篇文章主要介绍了Vue.js快速入门实例教程的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论