Vue组件通信传递数据的方式有哪些

前端开发   发布日期:2025年03月31日   浏览次数:125

今天小编给大家分享一下Vue组件通信传递数据的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Vue传值

Vue.js是一个组件化的前端开发框架,支持父子组件之间的消息传递和数据通信。子组件向父组件传递消息的过程称为“子传父”或“props down,events up”。

具体而言,在Vue.js中,每个组件都可以看作是一个独立的实例,它们之间可以通过特定的Props和Events属性进行双向绑定和通信。子组件在初始化时可以接收来自父组件的数据,并通过props属性绑定这些数据。当子组件需要向父组件发送事件或数据时,可以使用

  1. $emit
方法触发相应的事件,然后由父组件定义的v-on指令监听并执行相应的操作。

以下是一些关于Vue中

  1. props
  1. $emit
的常用概念:
  • props:在父组件中通过属性的方式向子组件传递数据或方法,子组件中可以通过props属性来获取相关数据或方法,从而实现父子组件之间的信息共享。

  • emit:在子组件中通过emit触发自定义事件,并携带需要传递的数据,父组件可以通过v-on监听到这些事件,然后执行相应的操作进行响应。

  • sync修饰符: 可以简化子组件向父组件派发事件的过程,添加.sync修饰符后,在父组件中更新子组件的状态时,无需手动监听子组件触发的事件,而是可以直接通过v-model语法糖进行处理,简单来说就是对一个prop进行双向绑定。

总之,“子传父”是Vue中非常重要的一个概念,它可以帮助我们更好地维护组件间的数据和功能的分离,同时也能提高程序的可读性和可维护性。对于在实际开发过程中遇到的“子传父”的问题,需要按照Vue框架的规范和约定来解决问题。

传递数据的三种方式

方式一

通过父组件给子组件绑定一个自定义事件实现:子给父传数据(使用

  1. @
  1. v-on

子组件:通过$emit触发父组件上的自定义事件,发送参数

  1. <template>
  2. <div class="son">
  3. <button @click="setValue">子传值</button>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: "son",
  9. data(){
  10. return {
  11. value:'子传父的内容'
  12. }
  13. },
  14. methods:{
  15. setValue(){
  16. this.$emit('son',this.value)//触发transfer方法,this.value为向父组件传递的数据
  17. }
  18. }
  19. }
  20. </script>

父组件:通过绑定自定义事件,接受子组件传递过来的参数

  1. <template>
  2. <div class="parent">
  3. <p>父组件接手到的内容:{{ value}}</p>
  4. <Son @son="getValue"></Son>
  5. <!-- 监听子组件触发的自定义事件事件,然后调用getValue方法 -->
  6. </div>
  7. </template>
  8. <script>
  9. import son from './Son'
  10. export default {
  11. name: 'parent',
  12. data () {
  13. return {
  14. msg: '父组件',
  15. value:'',
  16. }
  17. },
  18. components:{son},
  19. methods:{
  20. getValue(value){
  21. this.value= value
  22. }
  23. }
  24. }
  25. </script>

方式二

props实现:子给父传递数据

子组件:

  1. <template>
  2. <div class="son">
  3. <button @click="setValue">子传值</button>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: "son",
  9. props: ['getValue'],
  10. data(){
  11. return {
  12. value:'子传父的内容'
  13. }
  14. },
  15. methods:{
  16. setValue(){
  17. this.getValue('son',this.value)//this.value为向父组件传递的数据
  18. }
  19. }
  20. }
  21. </script>

父组件:

  1. <template>
  2. <div class="parent">
  3. <p>父组件接手到的内容:{{ value}}</p>
  4. <Son :getValue="getValue"></Son>
  5. </div>
  6. </template>
  7. <script>
  8. import son from './Son'
  9. export default {
  10. name: 'parent',
  11. data () {
  12. return {
  13. msg: '父组件',
  14. value:'',
  15. }
  16. },
  17. components:{son},
  18. methods:{
  19. getValue(value){
  20. this.value= value
  21. }
  22. }
  23. }
  24. </script>

方式三

使用ref

子组件:

  1. <template>
  2. <div class="son">
  3. <button @click="setValue">子传值</button>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: "son",
  9. data(){
  10. return {
  11. value:'子传父的内容'
  12. }
  13. },
  14. methods:{
  15. setValue(){
  16. this.$emit('son',this.value)//触发transfer方法,this.value为向父组件传递的数据
  17. }
  18. }
  19. }
  20. </script>

父组件:

  1. <template>
  2. <div class="parent">
  3. <p>父组件接手到的内容:{{ value}}</p>
  4. <Son ref="son" ></Son>
  5. <!-- 监听子组件触发的自定义事件事件,然后调用getValue方法 -->
  6. </div>
  7. </template>
  8. <script>
  9. import son from './Son'
  10. export default {
  11. name: 'parent',
  12. data () {
  13. return {
  14. msg: '父组件',
  15. value:'',
  16. }
  17. },
  18. components:{son},
  19. mounted(){
  20. setTimeout(() =>{
  21. // 函数体
  22. this.$refs.son.$on('son', this.getValue)
  23. }, 3000)
  24. },
  25. methods:{
  26. getValue(value){
  27. this.value= value
  28. }
  29. }
  30. }
  31. </script>

以上就是Vue组件通信传递数据的方式有哪些的详细内容,更多关于Vue组件通信传递数据的方式有哪些的资料请关注九品源码其它相关文章!