要重新渲染 Gutenberg 块而不调用 setAttributes(),可以使用 RichText 组件来实现。以下是一个示例代码:
const { createElement } = wp.element;
const { RichText } = wp.blockEditor;
function MyBlock( { attributes, setAttributes } ) {
const { content } = attributes;
function onChangeContent( newContent ) {
setAttributes( { content: newContent } );
}
return (
);
}
wp.blocks.registerBlockType( 'my-plugin/my-block', {
title: 'My Block',
icon: 'smiley',
category: 'common',
attributes: {
content: {
type: 'string',
source: 'html',
selector: 'p',
},
},
edit: MyBlock,
save: ( { attributes } ) => {
const { content } = attributes;
return { content }
;
},
} );
在上述代码中,MyBlock 组件使用 RichText 组件来渲染和编辑文本内容。onChangeContent 函数用于更新 content 属性的值,从而实现重新渲染。在编辑器中对文本进行修改时,RichText 组件会自动触发 onChange 事件并调用 onChangeContent 函数,从而更新 content 属性的值。
注意,这种方法只适用于需要重新渲染的属性是字符串类型的情况。对于其他类型的属性,可能需要使用其他组件或方法来实现重新渲染。