API en el componente que no funciona tras el despliegue
Solo funciona cuando lo suelto en el editor y no cuando carga como una URL desplegada Si cargas cosas desde algún tipo de almacenamiento (por ejemplo, DB) en tu "URL desplegada", asegúrate de tener una configuración remota correcta
Lee la respuesta completa abajo ↓Pregunta
Block.js =>
const bm = editor. Jefe de bloque;
const canvas = editor. Lienzo
bm.add('comp-block', {
etiqueta: 'Componente',
categoría: 'Extra',
Contenido: {
Tipo: 'Prueba de componentes'
},
atributos: {
Clase: 'FA Fa-Bars'
},
});
Component.js =>
editor. DomComponents.addType('component-test', {
modelo: {
Predeterminados: {
endpoint: ' // API URL // ',
Rasgos: [
{
tipo: 'select',
Nombre: 'Endpoint',
cambioProp: 1,
Opciones: ['Punto final'],
}
]
},
init() {
this.listenTo(this, 'change:endpoint', this.refreshContent);
this.refreshContent();
},
refreshContent() {
const { endpoint } = this.attributes;
const response = axios.get(endpoint,
{
cabeceras: {
'Aceptar': 'solicitud/json',
'Tipo de contenido': 'aplicación/json',
}
})
var result= // API Response //
this.components(resultado);
}
}
});
Podemos llamar a la API y funciona en Deployment cuando estamos pasando todo el html con script, cuerpo, estilo en Atributo de contenido del Administrador de bloques
Contenido:
<script>
var request = new XMLHttpRequest()
request.open('GET',' // URL DE LA API // ', verdadero)
request.setRequestHeader("Content-type", "application/json; charset=UTF-8");
request.setRequestHeader("Aceptar", "application/json, text/plain, */*");
request.onload = function(){
var jsonData = JSON.parse(this.response)
request.send()
</script>
Pero cuando la API se llama a través del Component, no funciona cuando la página carga en el despliegue. Solo funciona cuando la suelto en el editor y no cuando carga como una URL desplegada.
Ejemplo:
modelo: {
Predeterminados: {
endpoint: ' API URL ', // algún prop para el rasgo
Rasgos: [
{
tipo: 'select',
Nombre: 'Endpoint',
cambioProp: 1,
Opciones: [ 'Endpoint' ],
}
]
},
init() {
this.listenTo(this, 'change:endpoint', this.refreshContent);
this.refreshContent();
},
async refreshContent() {
const { endpoint } = this.attributes;
const response = esperar a obtener(endpoint);
...
Sea resultado = '';
// ... Resultado HTML de la respuesta asíncrona
...
this.components(resultado);
}
}
Respuestas (3)
Solo funciona cuando lo suelto en el editor y no cuando carga como una URL desplegada
Si cargas cosas desde algún tipo de almacenamiento (por ejemplo, DB) en tu "URL desplegada", asegúrate de tener una configuración remota correcta
@artf entiendo tu preocupación, pero en la versión desplegada las llamadas a la API dentro del contenido del blockmanager funcionan, solo que las API de componentes no se llaman. ¿Entonces es un problema de configuración remota o de otra cosa?
Por favor, ayúdame con el tema ... ¡Gracias de antemano!
¿Entonces es un problema de la configuración remota o de otra cosa?
Sí, como has descrito, puede que sea una configuración de almacenamiento incorrecta (comprueba también errores/advertencias en consola).
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #792
La propiedad de script usando función no funciona con bloques
En la documentación de Componentes & JS hay este ejemplo: Esto funciona perfectamente. Pero no podría usar una función en lugar de una cade...
Issue #1584
No obtengo el script de bloque de editor.getComponents()
A continuación está el componente que voy a añadir.this.editor.BlockManager.add('dob-mmyy-pii', { id: 'dob-mmyy', etiqueta: 'FECHA DE NACIM...
Issue #1034
Insertar elemento o bloque dentro del elemento padre
Buenos días, tengo componente, tengo bloqueo tengo Trait en los cambios de escucha, ¿cómo puedo añadir "h1" dentro de ese bloque "''<div cl...
Issue #1545
[Pregunta] ¿Cómo consigo identificación de Block?
Hola, tengo mi bloque y recibo resultados de impresión en Div ID de mi componente de clase javascript... ¿Cómo consigo identificación de mi...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Tutorial
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
GrapesJS Inline RTE Plugins Update: CKEditor 5 v0.1.4 and Froala Inline Text Editor
CKEditor 5 Inline for GrapesJS v0.1.4 fixes Studio SDK toolbar clipping, iframe injection and link balloon bugs. Compare with Froala Inline — both $69.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.