Issue #2319💬 RespondidoAbierto el 8 de octubre de 2019por glassdimlyReacciones 0

¿Cómo forzar el re-renderizado de un componente?

Respuesta rápidapor glassdimly

Al final activé un evento en cada objeto 'eliminado' que hacía que activaran sus propias actualizaciones. Hice esto con un objeto de configuración, pero aquí tienes un borrador más específico de mi código. Estos son componentes de dom sombra, así que 'this.parent().closest('pathway')' es un selector para '<pathway></p...

Lee la respuesta completa abajo ↓

Pregunta

const component = DomComponents.addType(name, {
  modelo: {
      eliminado() {
          const caminosPadre = este.padre().más cercano('vías-interactivas');
          if (pathwaysParent) {
           Esto no funciona. No existe tal función. He sacado este ejemplo de: https://github.com/artf/grapesjs/issues/1227#issuecomment-399754486
            pathwaysParent.render();
          }
        },
  }
}

Cuando intento lo siguiente en lugar de 'pathwaysParent.render()', obviamente se crea un bucle infinito:

           const coll = pathwaysParent.collection;
            const at = coll.indexOf(pathwaysParent);
            coll.remove(pathwaysParent);
            coll.add(pathwaysParent, { at });

Puedo acceder al el en 'pathwaysParent.view.el', pero sigo buscando una buena forma de forzar que el componente DOM se vuelva a renderizar de una forma que no sea hackeada.

Respuestas (1)

glassdimly9 de octubre de 2019

Al final activé un evento en cada objeto 'eliminado' que hacía que activaran sus propias actualizaciones. Hice esto con un objeto de configuración, pero aquí tienes un borrador más específico de mi código. Estos son componentes de dom sombra, así que 'this.parent().closest('pathway')' es un selector para '<pathway></pathway>'

          this.closest(lo que sea) siempre es 0.
          vía const = este.padre().más cercano('ruta');
          Esto solo se despacha una vez, porque (probablemente) los nodos se eliminan de los padres -> hacia abajo.
            si (vía) {
              pathway.view.el.dispatchEvent(
                new CustomEvent('step:title-updated', {
                  Burbujas: Cierto,
                }),
              );
            }

En general, volver a renderizar no es trabajo del editor. Aunque habría estado contentando actualizando todo el contenido, pero sin acceso al objeto 'editor' desde 'eliminado'.

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.