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

 更新时间:2023年04月28日 09:54:30   作者:唯爱赞多  
本文主要介绍了vue父子组件之间的传参的几种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Props

这是最常用的一种方式。通过props选项,在父组件中传递数据给子组件。在子组件中使用props声明该属性,就可以访问到父组件传递过来的数据了。

在父组件中:

<template>
  <ChildComponent :message="hello"></ChildComponent>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      hello: 'Hello, Vue!'
    }
  }
}
</script>

在子组件中:

<template>
  <div>{{ message }}</div>
</template>
<script>
export default {
  props: ['message']
}
</script>

emit

子组件向父组件传递数据的方式。在子组件中使用emit方法触发一个自定义事件,并通过参数传递数据。在父组件中监听这个事件,就可以访问到子组件传递过来的数据了。

首先,在子组件ChildComponent中定义一个customEvent事件:

<template>
  <button @click="handleClick">传递数据</button>
</template>
<script>
export default {
  methods: {
    handleClick() {
      const data = "Hello, World!"
      this.$emit('customEvent', data);
    }
  }
}
</script>

上面代码中,我们定义了一个点击事件handleClick,当用户点击按钮时,会触发这个事件。在事件处理函数中,我们定义了一个字符串变量data,并通过this.$emit(‘customEvent’, data)方式把这个变量传递给父组件。

接下来,在父组件ParentComponent中通过v-on:或者简写成@来监听子组件发出的自定义事件:

<template>
  <div>
    <child-component @customEvent="handleCustomEvent"></child-component>
  </div>
</template>
<script>
import ChildComponent from '@/components/ChildComponent.vue'
export default {
  components: {
    ChildComponent
  },
  methods: {
    handleCustomEvent(data) {
      console.log(data)
    }
  }
}
</script>

上面代码中,我们使用@customEvent="handleCustomEvent"语法来监听子组件发出的自定义事件。在父组件的methods选项中,我们定义了handleCustomEvent方法,并接收子组件传递过来的数据。当子组件调用this.$emit(‘customEvent’, data)时,该方法会被触发,在控制台输出子组件传递过来的数据。

provide/inject

这种方式允许祖先组件向后代组件注入依赖,避免了props层层传递的麻烦。在祖先组件中使用provide选项提供一个变量或者方法,在后代组件中使用inject选项注入这个变量或者方法即可在后代组件中使用。

parent/$children属性

可以直接访问父组件或子组件中的数据或方法。但是,这种方式可能会使得组件难以维护和复用,不太建议使用。

总的来说,Props和emit是Vue中最常用的父子组件之间传递数据的方式。而provide/inject和parent/$children则是一些特殊场景下才会用到的方式

到此这篇关于vue父子组件之间的传参的几种方式小结的文章就介绍到这了,更多相关vue父子组件传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Vue 中实现循环渲染多个相同echarts图表

    在Vue 中实现循环渲染多个相同echarts图表

    这篇文章主要介绍了在Vue 中实现循环渲染多个相同echarts图表,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue2.0 事件的广播与接收(观察者模式)

    Vue2.0 事件的广播与接收(观察者模式)

    这篇文章主要介绍了Vue2.0 事件的广播与接收(观察者模式),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • vue项目首屏打开速度慢的解决方法

    vue项目首屏打开速度慢的解决方法

    这篇文章主要介绍了vue项目首屏打开速度慢的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 浅析vue3中组件的二次封装

    浅析vue3中组件的二次封装

    在实际开发中每个开发者应该都有经历过对组件进行二次封装,本文将从三个方面来基于 Element UI 的el-input组件简单实现一下组件的二次封装,有需要的可以参考下
    2023-09-09
  • vue3中的hook简单封装

    vue3中的hook简单封装

    这篇文章主要介绍了vue3中的hook简单封装,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue使用axios进行数据异步交互的方法

    Vue使用axios进行数据异步交互的方法

    大家都知道在Vue里面有两种出名的插件能够支持发起异步数据传输和接口交互,分别是axios和vue-resource,同时vue更新到2.0之后,宣告不再对vue-resource更新,而是推荐的axios,今天就讲一下怎么引入axios,需要的朋友可以参考下
    2024-01-01
  • Vue.js学习之计算属性

    Vue.js学习之计算属性

    Vue.js 的内联表达式非常方便,但它最合适的使用场景是简单的布尔操作或字符串拼接。如果涉及更复杂的逻辑,你应该使用计算属性。下面这篇文章主要给大家介绍了Vue.js中的计算属性,需要的朋友可以参考借鉴,一起来看看吧。
    2017-01-01
  • Vue在css中图片路径问题解决的配置方法

    Vue在css中图片路径问题解决的配置方法

    这篇文章主要为大家介绍了Vue在css中图片路径问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • vue 防止页面加载时看到花括号的解决操作

    vue 防止页面加载时看到花括号的解决操作

    这篇文章主要介绍了vue 防止页面加载时看到花括号的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • antd的选择框如何增加tab选中的方法示例

    antd的选择框如何增加tab选中的方法示例

    这篇文章主要为大家介绍了antd的选择框如何增加tab选中的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论