返回

轻松理解 Vue 组件传值:父传子、子传父、兄弟传参

前端

一、父传子:从父组件传递数据到子组件

父传子是最常见的一种 Vue 组件传值方式。在这种方式中,父组件通过 props 向子组件传递数据。子组件可以使用 props 接收父组件传递的数据,并在组件内部使用这些数据。

1. 父组件传递数据

<template>
  <div>
    <child-component :data="data" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: '父组件数据'
    }
  }
}
</script>

在上面的代码中,父组件通过 :data="data"data 变量的数据传递给子组件。

2. 子组件接收数据

<template>
  <div>
    {{ data }}
  </div>
</template>

<script>
export default {
  props: ['data']
}
</script>

在上面的代码中,子组件通过 props: ['data'] 接收父组件传递的数据。

二、子传父:从子组件传递数据到父组件

子传父是一种允许子组件向父组件传递数据的方式。这种方式可以通过事件来实现。当子组件触发一个事件时,父组件可以监听这个事件并做出相应的处理。

1. 子组件触发事件

<template>
  <div>
    <button @click="emitData">子组件按钮</button>
  </div>
</template>

<script>
export default {
  methods: {
    emitData() {
      this.$emit('data', '子组件数据')
    }
  }
}
</script>

在上面的代码中,子组件通过 this.$emit('data', '子组件数据') 触发了一个名为 data 的事件,并将 子组件数据 作为参数传递给父组件。

2. 父组件监听事件

<template>
  <div>
    <child-component @data="handleData" />
  </div>
</template>

<script>
export default {
  methods: {
    handleData(data) {
      console.log(data) // 子组件数据
    }
  }
}
</script>

在上面的代码中,父组件通过 @data="handleData" 监听了子组件触发的 data 事件。当子组件触发这个事件时,父组件的 handleData 方法就会被调用,并且可以处理子组件传递的数据。

三、兄弟传参:在兄弟组件之间传递数据

兄弟传参是允许兄弟组件之间传递数据的一种方式。这种方式可以通过自定义事件来实现。当一个兄弟组件触发一个自定义事件时,另一个兄弟组件可以监听这个事件并做出相应的处理。

1. 兄弟组件触发自定义事件

<template>
  <div>
    <button @click="emitData">兄弟组件按钮</button>
  </div>
</template>

<script>
export default {
  methods: {
    emitData() {
      this.$emit('data', '兄弟组件数据')
    }
  }
}
</script>

在上面的代码中,兄弟组件通过 this.$emit('data', '兄弟组件数据') 触发了一个名为 data 的自定义事件,并将 兄弟组件数据 作为参数传递给另一个兄弟组件。

2. 兄弟组件监听自定义事件

<template>
  <div>
    <brother-component @data="handleData" />
  </div>
</template>

<script>
export default {
  methods: {
    handleData(data) {
      console.log(data) // 兄弟组件数据
    }
  }
}
</script>

在上面的代码中,兄弟组件通过 @data="handleData" 监听了另一个兄弟组件触发的 data 自定义事件。当另一个兄弟组件触发这个自定义事件时,这个兄弟组件的 handleData 方法就会被调用,并且可以处理传递的数据。

结语

在本文中,我们详细讲解了 Vue 组件传值的