HAZAÑA: No se muestra ningún ejemplo para extender un tipo de imagen similar a un componente
Extiendes la imagen como cualquier otro componente, se explica aquí. Si tienes un caso de uso concreto, depende de ti mirar el origen de la implementación del componente
Lee la respuesta completa abajo ↓Pregunta
No hay ejemplos para componentes como extender tipos de imágenes, la documentación parece un poco difícil de entender y comprender; si hay ejemplos para personalizar un tipo de imagen o el subidor de imágenes para un componente separado, sería bueno, porque tenemos un caso de uso en mi proyecto.
Respuestas (3)
Extiendes la imagen como cualquier otro componente, se explica aquí. Si tienes un caso de uso concreto, depende de ti mirar el origen de la implementación del componente
Me enfrento a la misma dificultad que @revdfdev: al seguir el ejemplo de la documentación para ampliar un componente existente, me cuesta comprender. Por ejemplo, la documentación dice: '''javascript comps.addType('my-new-component', { isComponent: el => {/* ... */}, extiende: 'otro-componente-definido', model: { ... }, // Extenderá el modelo desde 'other-defined-component' vista: { ... }, // Extenderá la vista desde 'otro-definido-componente' });
¿qué se pone en el '{ ... }`? Esto nunca se explica, solo un montón de puntos. Si defino 'modelo' como
'''javascript
modelo: {
Predeterminados: {
Rasgos: [
'otro',
'Fred',
],
}
}
Entonces los rasgos existentes 'id' y 'título' se destruyen, nada se 'extiende'. Por ejemplo, quiero preservar la característica predeterminada de 'id' asignada automáticamente, a menos que establezca explícitamente su valor. Si vuelvo a implementar 'id', tendría que averiguar cómo hacerlo yo mismo otra vez.
Hay muy pocos, si es que hay alguno, ejemplos de usar 'extender'; todos los ejemplos que encuentro usan este tipo de técnica, por ejemplo, este ejemplo: '''javascript var domComps = editor. DomComponents; dType = domComps.getType('default'); dModel = dType.model; dVista = dTipo.vista;
domComps.addType('input', { model: dModel.extend({ defaults: Object.assign({}, dModel.prototype.defaults, { rasgos: dModel.prototype.defaults.traits.concat([ 'prueba' ]) }) }, { isComponent: function (el) { if (el.tagName == 'ENTRADA') { return { type: 'input' }; } }, }), Ver: dView });
¿Es quizás una técnica antigua que precede a la idea de 'extender'? Interesante, en el ejemplo anterior, ¿obtengo el atributo 'test' sin declararlo explícitamente?
El único otro ejemplo de usar 'extender' que encontré fue en el #3135 y ejecutando [here](https://codesandbox.io/s/sharp-easley-3hrdn?file=/index.js) y parece muy simple y zen; sin embargo, solo muestra añadir un manejador 'dblclick' al componente de vídeo y no muestra añadir atributos o propiedades y rasgos adicionales del componente.
También he intentado estudiar plugins de componentes existentes, pero no encuentro ninguno que use 'extender'. Por cierto, estudiar plugins publicados supone un nivel adicional de complejidad, ya que están estructurados de forma diferente a un plugin que yo defino sobre la marcha dentro de mi propio proyecto. Me gustaría un ejemplo sencillo de llamar a 'addType' que, por ejemplo, extienda un componente de entrada o texto con atributos y rasgos adicionales, y en mi opinión debería estar en el documento.
Cuando extiendes las propiedades por defecto, funciona así: '''js Componente A Predeterminados: { Propuesto: 'A', PropositB: [1, 2], }
Componente B, que extiende el Componente A Predeterminados: { El Componente B tendrá propA como Componente A propB: [3, 4], // esto anula completamente el propB }
Si necesitas que propB se fusione con el del Componente A, necesitarías algo así
'''js
const parentProps = domc.getType('parent-type').model.prototype.defaults;
// ...
Predeterminados: {
Propositorio: [ ... parentProps.traits, 3, 4 ]
}
Interesante, en el ejemplo anterior obtengo la prueba de atributos sin declararlo explícitamente?
Las cadenas recurren a un rasgo de texto simple tipo ''attr-name'' => '{ type: 'text', name: 'attr-name' }'
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1964
[PREGUNTA] Requisitos mínimos para crear un componente personalizado
He estado leyendo la documentación todo el día sobre cómo crear un componente personalizado. También he mirado grapesjs-mjml como ejemplo....
Issue #2404
Pregunta: cómo observar los cambios en los componentes de los niños
¿Hay alguna forma sencilla de suscribirme o escuchar los cambios en los componentes/hijos de mi tipo de componente personalizado? ¿Quizá al...
Issue #3392
HAZAÑA: Permitir una configuración dinámica droppable usando una función
Tengo un requisito que me permite usar selectores para determinar si un elemento es soltable. Por ejemplo: ! imagen El componente "hijo" de...
Issue #1929
Carga el gestor de activos, pero los activos no funcionan
Estoy usando el icono del lápiz para activar el gestor de activos. El disparador funciona bien, pero cuando hago clic en cualquiera de las...
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.