Issue #1970✓ ResueltoAbierto el 21 de abril de 2019por rodenpReacciones 33

Integración de componentes de React

Respuesta rápidapor rodenp12

Un trabajo fantástico @beepsoft Integrar React correctamente en el núcleo sería un gran paso y podría dar paso al soporte de otros frameworks. Esto elevará el listón para los grapesjs a otro nivel.

Lee la respuesta completa abajo ↓

Pregunta

Primero, qué gran herramienta tienes aquí.

Perdón si hago preguntas que ya se han hecho antes. He intentado leer la documentación y buscar publicaciones en Google, pero sigo un poco atascado.

Soy como unas pocas personas intentando integrar componentes de React en grapesjs.

https://github.com/artf/grapesjs/issues/170 menciona lógica de render personalizada. ¿Cómo implementaría lógica de renderizado personalizada?

Y encontré este -> https://www.npmjs.com/package/grapesjs-react que no contiene ningún componente realmente arrastrable que yo pudiera ver.

¿Hay ejemplos que realmente tengan un componente de react de muestra que se pueda arrastrar al lienzo?

¿Puedes describir las áreas que habrá que abordar al integrar componentes de React?

Gracias de nuevo por un proyecto tan increíble.

Respuestas (3)

👍 Muy útilrodenp11 de noviembre de 2019

Un trabajo fantástico @beepsoft Integrar React correctamente en el núcleo sería un gran paso y podría dar paso al soporte de otros frameworks. Esto elevará el listón para los grapesjs a otro nivel.

artf19 de octubre de 2019

Muy interesante @beepsoft especialmente toda la explicación del proceso

¿Podrías, por favor, añadir una API pública para poder proporcionar un analizador HTML personalizado de la misma manera que es posible proporcionar un analizador CSS personalizado?

Veré si puedo añadir algo rápido sin demasiadas refactorizaciones, pero por lo que veo, tu método es bastante seguro incluso si usas métodos no públicos.

De todos modos, el proyecto que has hecho puede renderizar un solo componente, el '<Timer/>', cuesta creer que alguien se lance en un viaje así solo para añadir un componente de React. Creo que tenemos que crear una especie de renderizador genérico de componentes de React que pueda mostrar automáticamente cualquier componente de React.

Un ejemplo de lo que esperaría como API

'''js importar uvas de 'uvas'; importar ReactRenderer de 'grapesjs-react-renderer';

grapesjs.init({ ... Plugins: [ esto podía contener el analizador HTML personalizado, el generador de código, comandos, etc. ReactRenderer, ], });

// ... en algún lugar del código u otro plugin importar ReactComponent de 'some/react/component'; importar { addComponent } de 'grapesjs-react-renderer';

// ... addComponent(editor, ReactComponent, { nombre: 'Nombre del componente', bloque: { // por ejemplo, añadir también un bloque etiqueta: 'Nombre del bloque', Medios: '<SVG ...', }, rasgos: [ ... ], // Añade rasgos personalizados o crearlos leyendo los componentes propTypes // ... Otras opciones });

beepsoft18 de octubre de 2019

Hola,

He creado aquí una implementación conceptual/ejemplo de integración de un componente de React como bloque/componente GrapesJS:

https://github.com/beepsoft/grapesjs-react-component-example

Aunque "integrar con React" podría significar muchas cosas, aquí está el caso de uso que intenté resolver:

  • Tener un bloque GrapesJS bloque, que al arrastrarse sobre el lienzo utiliza un componente React para mostrar el contenido del lienzo.
  • Hacer que el mismo component genere código JSX de sí mismo en la plantilla final.
  • Tener una forma de obtener el JSX/CSS generado por GrapesJS como texto y hacerlo funcionar de nuevo cargando el texto JSX/CSS en un componente de React.

Para que todo esto funcionara tuve que implementar un analizador HTML personalizado y reemplazar el parser integrado de alguna manera, pero la forma en que lo hice es un poco improvisada. @artf ¿Podrías, por favor, añadir una API pública para poder proporcionar un analizador HTML personalizado de la misma manera que es posible proporcionar un analizador CSS personalizado?

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.