You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue中向多个子组件传递共享Props?

在Vue中实现React式的共享props展开传递

在Vue里,你可以用**无参数的v-bind**来实现和React中{...shared_props}完全等价的效果——把对象的每个键值对作为独立的props传递给子组件,而不是把整个对象作为单个prop传入。

具体实现步骤

  1. 声明共享的props对象

    • Vue 2选项式API:
      <script>
      export default {
        data() {
          return {
            sharedProps: {
              prop1: 'value1',
              prop2: 'value2',
              prop3: 'value3'
            }
          }
        }
      }
      </script>
      
    • Vue 3组合式API:
      <script setup>
      const sharedProps = {
        prop1: 'value1',
        prop2: 'value2',
        prop3: 'value3'
      }
      </script>
      
  2. 在模板中传递给子组件
    直接使用v-bind="sharedProps",就会自动把对象里的每个属性拆解成单独的props传递给子组件:

    <template>
      <ChildComponent1 v-bind="sharedProps" />
      <ChildComponent2 v-bind="sharedProps" />
      <ChildComponent3 v-bind="sharedProps" />
    </template>
    

和你提到的错误写法的区别

你说的v-bind:shared_props="shared_props"是把整个shared_props对象作为一个名为shared_props的单个prop传给子组件,子组件需要声明一个shared_props的prop来接收;而v-bind="sharedProps"是把对象里的prop1、prop2、prop3分别作为独立的props传递,子组件需要单独声明这些prop来接收,这和React的{...shared_props}行为完全一致。

额外补充:混合自定义props

如果需要在共享props的基础上添加额外的自定义prop,直接在组件上追加即可,逻辑和React一致:

<template>
  <ChildComponent1 v-bind="sharedProps" extraProp="customValue" />
</template>

内容的提问来源于stack exchange,提问作者Joe Bin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:10:36