将数据从单个父组件传递到子组件

问题描述 投票:2回答:1

我有一个vue组件是page.vue。我有一个card.vue的子vue组件,如下所示。

我无法将数据注入卡(子)组件。

我尝试在页面组件的内部和数据函数中注入数据。

Page.vue

<template>
  <div class="container">
    <card></card>
  </div>
</template>

<script>
import Card from "../Card.vue"
export default {
    name: 'skills',
    components: {
      "card": Card
    },
    data: function() {
        return {
            message: "Skills"
        }
    }
}
</script>

Card.vue

<template>
  <div class="container drop-shadow">
  </div>
</template>

<script>
export default {
    name: 'card',
    data: function() {
        return {
            data: "",
        }
    }
}
</script>

我希望该卡可以从除Page.vue之外的其他组件重复使用。需要将数据注入到与显示位置相对应的卡中。

javascript vue.js vuejs2
1个回答
3
投票

您可以通过两种方式传递数据。

首先是通过使用props

方法1:

<template>
  <div class="container">
    <card :message="message"></card>
  </div>
</template>

<script>
import Card from "../Card.vue"
export default {
    name: 'skills',
    components: {
      "card": Card
    },
    data: function() {
        return {
            message: "Skills"
        }
    }
}
</script>

这将使Card.vue中的数据可用

<template>
  <div class="container drop-shadow">{{ message }}
  </div>
</template>

<script>
export default {
    name: 'card',
    props: ['message'],
    data: function() {
        return {
            data: "",
        }
    }
}
</script>

方法2:您还可以在Card.vue中放置一个slot,它允许您将内容放在父节点上的元素标签之间。 Page.vue

<template>
  <div class="container">
    <card>{{ message }}</card>
  </div>
</template>

<script>
import Card from "../Card.vue"
export default {
    name: 'skills',
    components: {
      "card": Card
    },
    data: function() {
        return {
            message: "Skills"
        }
    }
}
</script>

Card.vue

<template>
  <div class="container drop-shadow">
    <slot />
  </div>
</template>

<script>
export default {
    name: 'card',
    data: function() {
        return {
            data: "",
        }
    }
}
</script>

© www.soinside.com 2019 - 2024. All rights reserved.