我正在尝试在 Gutenberg 中创建一个涉及上传图像的自定义块。我遇到的问题是render
inMediaUpload
不起作用。我想我错过了一些东西,但我找不到它。
每当我尝试将一个MediaUpload
元素放入一个块中时,它都是空的。在下面的代码中,如果你检查它,你会看到<div class="image-test">
但里面什么都没有。
我尝试简化到下面的代码以确保没有任何干扰,但它仍然对我不起作用。
这是block.js
代码:
const { registerBlockType } = wp.blocks;
const { MediaUpload, MediaUploadCheck } = wp.editor;
const { Button } = wp.components;
registerBlockType( 'custom/image-test', {
title: 'Image Test',
icon: 'warning',
category: 'custom-blocks',
edit( { attributes, className, setAttributes } ) {
return (
<div className="image-test">
<MediaUploadCheck>
<MediaUpload
onSelect={ media => console.log( media.length ) }
render={ ({ open }) => (
<Button onClick={ open }>
Open Media Library
</Button>
)}
/>
</MediaUploadCheck>
</div>
);
},
save( { attributes } ) {
return (
<div class="image-test">
<p>Image Test</p>
</div>
);
},
} );
这是我在函数中声明块的地方:
function image_test_block(){
wp_register_script(
'image-test-script', // name of script
get_template_directory_uri() . '/js/block-image-test.js', // path to script
array( 'wp-blocks', 'wp-element', 'wp-editor', 'wp-components' ) // dependencies
);
register_block_type('custom/image-test', array(
'editor_script' => 'image-test-script'
) );
}
add_action( 'init', 'image_test_block', 10, 0 );