Integración de componentes de React
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)
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.
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 });
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.
Issue #3541
[PREGUNTA] ¿Cuál es la forma idiomática de añadir y eliminar clases de los componentes?
Hola 👋 ¡Me encanta el editor! Estamos usando rasgos para modificar las clases que tiene un componente, pero eso resulta un poco forzado po...
Issue #3524
[PREGUNTA]: Integrar el elemento select2 UI en rasgos
Soy nuevo en uvasJS... Gran herramienta. Tengo algunas preguntas sobre los rasgos. He seguido este tutorial https://grapesjs.com/docs/modul...
Issue #2440
Redimensionar por clase :(
El principal problema que tengo es que intento hacer un redimensionamiento en un componente que he hecho, pero si tengo dos componentes igu...
Issue #673
¿Cómo renderizar el Gestor de bloques fuera del contenedor?
Soy nuevo en esta gran biblioteca y parece muy ordenada y limpia, PERO aquí está el problema que tengo. Estoy teniendo GJS renderizado en e...
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 →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.