繁体   English   中英

Vue slot-props 没有被传递给子组件

[英]Vue slot-props are not being passed through to child component

我已经调试了几天了,但一直无法提出解决方案。 我看过几个关于如何实现插槽道具的视频,但没有任何运气让它在我自己的代码中工作。

这是我创建的模态组件的实现。 我正在尝试将一个按钮传递到模态组件上的“动作”插槽中,并将其传递给一个动作。 这对我来说似乎有点违反直觉。 我想我可以将存在于我的父组件上的“动作” object 直接传递到插槽中,而不是进入模态然后进入插槽。 我试过这个

<template>
  <modal v-bind:action="action">
    <template v-slot:action="action">
      <v-btn :disabled="!action.valid" @click="action.onClick">{{action.text}}</v-btn>
    </template>
  </modal>
</template>

和这个:

<template>
  <modal>
    <template v-slot:action="action">
      <v-btn :disabled="!action.valid" @click="action.onClick">{{action.text}}</v-btn>
    </template>
  </modal>
</template>

这是我正在尝试创建的模式:

<template>
  <v-card-actions>
    <slot :action="action" name="actions"></slot>
  </v-card-actions>
</template>

动作 object 如下所示:

action: object = {
 text: "Connect",
 valid: this.valid,
 onClick: this.connect
};

我收到以下错误:

Property or method "action" is not defined on the instance but referenced during render.

有没有人对问题可能有任何想法?

我认为问题出在@click="action.onClick"上。 您没有向我们展示您的 function,而是试图通过 object 绑定它(这绝对没有必要)。

以下是有效的代码:

家长

<Child>
  <template v-slot:action>
    <v-btn :disabled="!action.valid" @click="onClick()" color="primary">{{action.text}}</v-btn>
  </template>
</Child>
components: {
  Child,
},

data: () => ({
  action: {
    text: "Connect",
    valid: false
  }
})

methods: {
  onClick() {
    console.log('Clicked!')
  }
}

孩子

<slot name="action"></slot>

代码框示例: https://codesandbox.io/s/codesandbox-vue-vuetify-3jije

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM