如何渲染一个组件的内容,该组件通过槽渲染另一个组件

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

如下面发布的代码所示,组件

ButtonDigitizePolygon.vue
包含一个名为
button
slot
。组件
NDVIComparisonGui.vue
渲染
ButtonDigitizePolygon.vue
。 我希望
App.vue
渲染
NDVIComparisonGui.vue
,因此也渲染
ButtonDigitizePolygon.vue

以下是我的尝试。当我运行代码时,我只看到

<img>
的内容,但按钮从未呈现。

请告诉我按钮未渲染的原因以及解决方法。

App.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <NDVIComparisonGui></NDVIComparisonGui>
</template>

<script>
import NDVIComparisonGui from './components/NDVIComparisonGui.vue'

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

NDVIComparisonGui.vue

<template>
    <ButtonDigitizePolygon @click="onDigitizePolygon()" :isBtnDigitizePolygonDisabled="isBtnDigitizePolygonDisabled">
        <template v-slot:slotDigitizePolygonBtnLabel>
            {{ compPropsIsToggleBtnDigitizePolygon }}
        </template>
</ButtonDigitizePolygon>
</template>

<script>
import { ref } from 'vue';
import { ButtonDigitizePolygon } from './ButtonDigitizePolygon.vue';

let isBtnDigitizePolygonDisabled = ref(false);

export default {
    name: 'NDVIComparisonGui',
    date() {
        return {
            isBtnDigitizePolygonDisabled,
        };
    },
    components: {
        ButtonDigitizePolygon,
    },
    props: {
    },
};
</script>

ButtonDigitizePolygon.vue

<template>
<button id="idDigitizePolygonBtn" class="clsDigitizePolygonBtn" :disabled="isBtnDigitizePolygonDisabled">
    <slot name="slotDigitizePolygonBtnLabel"></slot>
</button>
</template>

<script>
export default {
    date() {
        return {
            btnDigitizePolyhonState: this.isBtnDigitizePolygonDisabled,
        };
    },
    props: {
        isBtnDigitizePolygonDisabled: {
            type: Boolean,
            default: false,
        },
    },
};
</script>
vue.js vuejs3 vue-component
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.