La idea no es programar el nombre, sino pasar el nombre como propiedad.
Entonces puedo tener un componente base de vue y digo qué componente de vue cargar allí dinámicamente dando el nombre y la ubicación. Lo que funciona perfectamente cuando escribo la cadena (establezco el nombre) pero no cuando pongo el nombre en una cadena, dice módulo no encontrado.
entonces si import('./yyy.vue') funciona pero si. pero si import(var_that_is_the_name) dice que no se encuentra. Creo que tiene algo que ver con laravel mix o stringparsing.
<template> <div class="xxx" ref="xxx"> <component :is="dynamicComponent"></component> <div class="right"> right {{ this.DvueLocation }} </div> </div> </template> <script> import { defineAsyncComponent } from '@vue/runtime-core' export default { name: 'xxx', components: { }, props: { DvueLocation: { type: String, default: "./yyy.vue", }, DvueName: { type: String, default: "yyy" } }, data: function () { return { isMounted: false, } }, computed: { dynamicComponent() { console.log(this.DvueLocation); return defineAsyncComponent(() => import('./yyy.vue')) return defineAsyncComponent(() => import(this.DvueLocation)) } }, } </script>el yyy.vue es un componente simple que imprime yyy.
la primera línea funciona, la segunda sin frío no agrega // para ello y guarda. Traté de poner "'" + alrededor y mucho más
mientras que es exactamente lo mismo si lo escribo. tanto la cadena impresa como en la consola del navegador da el valor correcto
Algo que ver con el análisis de cadenas.
return defineAsyncComponent(() => import('./' + this.DvueName))¡Esto funciona para mí ahora!