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

如何正确绑定具名插槽属性?解决v-slot指令冲突问题

Vue具名作用域插槽属性绑定错误修复

你遇到的错误是因为**#scopedSlot**是v-slot:scopedSlot的缩写语法,不能在同一个<template>标签上同时使用缩写语法和完整的v-slot="slotProps"指令,这属于重复绑定v-slot指令。

正确绑定方式

以下两种写法都可以解决问题:

写法1:缩写语法直接绑定作用域变量

<template #scopedSlot="slotProps">
  {{ slotProps.text }} {{ slotProps.count }}
</template>

写法2:完整v-slot语法指定插槽名和变量

<template v-slot:scopedSlot="slotProps">
  {{ slotProps.text }} {{ slotProps.count }}
</template>

额外注意事项

你的BaseLayer_0组件中greetingMessage变量未定义,需要在组件的data中声明,否则会出现undefined的问题:

<script>
export default {
  name: 'BaseLayer_0',
  data() {
    return {
      greetingMessage: 'Hello from scoped slot!'
    }
  }
}
</script>

修改后的完整App.vue代码

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>

  <BaseLayer_0>
    <template #header>
      <h1>header</h1>
    </template>

    <template #default>
      <p>default</p>
    </template>

    <template #footer>
      <p>footer</p>
    </template>

    <!-- 修正后的具名作用域插槽 -->
    <template #scopedSlot="slotProps">
      {{ slotProps.text }} {{ slotProps.count }}
    </template>
    
  </BaseLayer_0>

</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import BaseLayer_0 from './components/BaseLayer_0.vue'

export default {
  name: 'App',
  components: {
    HelloWorld,
    BaseLayer_0
  }
}
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:05:11