Wordpress Gutenberg InnerBlock.Content 未保存或呈现
Wordpress Gutenberg InnerBlock.Content is not being saved or rendered
我正在通过自定义插件在 Gutenberg 中创建一个自定义块。我的自定义块包含 InnerBlocks。编辑功能似乎工作正常,因为我可以将块添加到页面,并按预期在块内放置新的块元素。当我重新加载页面时出现问题。在我更新页面并重新加载编辑器后,所有 InnerBlock 元素都消失了。它们没有被保存,也没有在前端呈现。除非我疯了,否则我的保存功能构建不正确。任何帮助都会很棒。我精通 Wordpress 和 JS,但不熟悉 React 和 Gutenberg。感谢您的帮助!
( function( blocks, element, editor ) {
const el = element.createElement;
const { registerBlockType } = blocks;
const InnerBlocks = editor.InnerBlocks;
registerBlockType( 'dab/nest', {
title: 'Disruptive Nest',
icon: 'layout',
category: 'disruptive-blocks',
keywords: [ 'base', 'build', 'custom' ],
edit: function( props ) {
return (
el( 'div', {className: props.className + ' dab-full'},
el( 'div', {className: 'dab-content'},
el( InnerBlocks )
)
)
);
},
save: function( props ) {
return (
el( 'div',
el( 'div',
el( InnerBlocks.Content, null )
)
)
);
},
});
})( window.wp.blocks,
window.wp.element,
window.wp.blockEditor
);
我在块编辑器手册 ([https://developer.wordpress.org/block-editor/developers/block-api/block-edit-save/#classname) 中找到了这个:
"This is automatically added in the save method, but not on edit" [关于 props.className 的话题。这就是为什么我最初没有镜像 类 的原因。再次阅读它让我意识到在 "save" 函数上镜像 classNames 并不能解决它,只是在每个父 el( 'div',
之后添加 {}
,即使您没有指定任何内容,就是修复该功能的原因。
所以,它是这样工作的,类名自动添加到第一个el( 'div',
:
save: function( props ) {
return (
el( 'div', {},
el( 'div', {},
el( InnerBlocks.Content )
)
)
);
},
谢谢@niklas 帮助我实现这一点。
我正在通过自定义插件在 Gutenberg 中创建一个自定义块。我的自定义块包含 InnerBlocks。编辑功能似乎工作正常,因为我可以将块添加到页面,并按预期在块内放置新的块元素。当我重新加载页面时出现问题。在我更新页面并重新加载编辑器后,所有 InnerBlock 元素都消失了。它们没有被保存,也没有在前端呈现。除非我疯了,否则我的保存功能构建不正确。任何帮助都会很棒。我精通 Wordpress 和 JS,但不熟悉 React 和 Gutenberg。感谢您的帮助!
( function( blocks, element, editor ) {
const el = element.createElement;
const { registerBlockType } = blocks;
const InnerBlocks = editor.InnerBlocks;
registerBlockType( 'dab/nest', {
title: 'Disruptive Nest',
icon: 'layout',
category: 'disruptive-blocks',
keywords: [ 'base', 'build', 'custom' ],
edit: function( props ) {
return (
el( 'div', {className: props.className + ' dab-full'},
el( 'div', {className: 'dab-content'},
el( InnerBlocks )
)
)
);
},
save: function( props ) {
return (
el( 'div',
el( 'div',
el( InnerBlocks.Content, null )
)
)
);
},
});
})( window.wp.blocks,
window.wp.element,
window.wp.blockEditor
);
我在块编辑器手册 ([https://developer.wordpress.org/block-editor/developers/block-api/block-edit-save/#classname) 中找到了这个:
"This is automatically added in the save method, but not on edit" [关于 props.className 的话题。这就是为什么我最初没有镜像 类 的原因。再次阅读它让我意识到在 "save" 函数上镜像 classNames 并不能解决它,只是在每个父 el( 'div',
之后添加 {}
,即使您没有指定任何内容,就是修复该功能的原因。
所以,它是这样工作的,类名自动添加到第一个el( 'div',
:
save: function( props ) {
return (
el( 'div', {},
el( 'div', {},
el( InnerBlocks.Content )
)
)
);
},
谢谢@niklas 帮助我实现这一点。