javascript - 我如何接收和传递“v-”道具给孩子们?
问题描述
我想要一些包装器组件,正如您可能猜到的那样,其主要目的只是以某种方式设置样式并包含传递的子项/已传递的道具。
我有包装组件:
// components/FancyButton.vue
<template>
<button class="fancy-button">
<slot />
</button>
</template>
如何将“v-”道具传递给它<button>
以便处理 click ?
// components/App.vue
<template>
<FancyButton v-on:click="doSomething()"> <!-- props go to nowhere -->
Some children
</FancyButton>
</template>
<script>
import FancyButton from './FancyButton'
export default {
components: {
FancyButton
}
}
</script>
解决方案
要将属性传递给组件,您必须在组件中声明它,然后v-bind
在使用组件时使用语法。
例如,如果这是您的组件:
<template>
<button class="fancy-button">
<slot />
</button>
</template>
在模板的脚本部分:
<script>
module.exports = {
/...
props: {
yourData {
type: DATA_TYPE
}
}
}
</script>
在包装器组件中,您执行以下操作:
<template>
<FancyButton v-on:click="doSomething()" v-bind:yourData="">
Some children
</FancyButton>
</template>
要将函数作为道具传递,请执行以下操作:
<script>
module.exports = {
/...
props: {
yourData {
type: Function
}
}
}
</script>
这通常是不鼓励的,您可以使用事件来实现您想要的相同逻辑。
我建议阅读以下文章:
推荐阅读
- graphql - GraphQL 祖先数据上下文
- msbuild - Visual Studio 构建工具无法识别“net5.0-windows”
- yarnpkg - 如何在项目安装期间再次看到纱线提出的所有警告?有这个命令吗?
- d3.js - dc.js 覆盖 2 个图表
- python - 在 Python 中转换 pd.to_datetime
- python - Freezegun 不适用于 django orm create_at 字段
- php - 在 Laravel 的表单请求中验证数据的问题
- postgresql - 如何在备份数据库中使用 PoWA?
- html - 加特林 HTML 响应
- sql - SQL sum 和 group by week