Load fallback component if main component does not exits #13058
Unanswered
opuu
asked this question in
Help/Questions
Replies: 2 comments
-
Found a way to get rid of the error, but still interested if there is any better way. <template>
<component :is="footerComponent" />
</template>
<script lang="ts" setup>
const modules = import.meta.glob("@wtp/MainFooter.vue");
const footerComponent = shallowRef();
if (modules["@wtp/MainFooter.vue"]) {
// @ts-ignore
footerComponent.value = defineAsyncComponent(() => modules["@wtp/MainFooter.vue"]());
} else {
footerComponent.value = defineAsyncComponent(() => import("./FallbackFooter.vue"));
}
</script> |
Beta Was this translation helpful? Give feedback.
0 replies
-
You can simplify this by using the <template>
<MainFooter></MainFooter>
</template>
<script lang="ts" setup>
import { defineAsyncComponent } from 'vue';
const modules = import.meta.glob('@wtp/MainFooter.vue');
const MainFooter = defineAsyncComponent({
loader: (): any => modules['@wtp/MainFooter.vue']?.() || Promise.reject(),
errorComponent: () => 'error',
});
</script> |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
The MainFooter might not exist in the themes folder, in that case we are loading fallback component.
Here is what I came up with:
This works but gives the following error on website:
Any better ways to do this?
Beta Was this translation helpful? Give feedback.
All reactions