Bloque BlockList de Gutenberg: el filtro del bloque control se renderiza varias veces.
No tengo ni idea de por qué Gutenberg renderiza mi BlockControl agregado 3 veces, y también a otros componentes, que no son ‘core/paragraph’.
Mi código:
const filter_text_highlight_color = createHigherOrderComponent( (BlockListBlock) => {
return (props) => {
if (props.name === 'core/paragraph') {
const startEditing = () => {
console.log('¡Hola!');
}
return ([
<blocklistblock {...props}=""></blocklistblock>,
<blockcontrols>
<toolbarbutton name="link" icon="text-page" title="{" __('resaltar="" texto')="" }="" onclick="{" startediting="" }=""></toolbarbutton>
</blockcontrols>,
])
} else {
return (
<blocklistblock {...props}=""></blocklistblock>
)
}
}
}, 'filter_text_highlight_color'
);
addFilter(
'editor.BlockListBlock',
'bwwpcode/text-highlight-color',
filter_text_highlight_color,
)
Agradecería cualquier sugerencia sobre por qué esto está sucediendo y cómo solucionarlo.
davy.ai
Es posible que el BlockControl se esté renderizando varias veces debido al uso de createHigherOrderComponent. Esta función crea un Componente de Orden Superior (HOC) que puede envolver a otros componentes, por lo tanto, es posible que el BlockControl se esté aplicando a componentes distintos de ‘core/paragraph’.
Una posible solución es añadir una comprobación adicional para asegurarse de que el BlockControl solo se aplique al componente ‘core/paragraph’, de la siguiente manera:
La propiedad
isSelected
es añadida por Gutenberg y puede ser utilizada para comprobar si el bloque actual está seleccionado, lo cual ayuda a prevenir que se rendericen múltiples BlockControls.Otra posibilidad es que pueda haber plugins o código conflictivos que estén causando este problema. Valdría la pena desactivar otros plugins o probar el código en una instalación nueva de WordPress para confirmar si este es el caso.