Gutenberg是WordPress中的一个编辑器,它使用块(blocks)来构建内容。RichText块允许用户输入和格式化文本,而无序列表(Unordered List)是一种常见的列表类型,通常用于展示项目或任务。
要在Gutenberg中实现这一点,可以使用嵌套块的方式。具体步骤如下:
以下是一个示例代码,展示了如何在Gutenberg中实现这一功能:
import { registerBlockType } from '@wordpress/blocks';
import { RichText, BlockControls } from '@wordpress/block-editor';
import { useBlockProps } from '@wordpress/block-layout';
registerBlockType('my-plugin/rich-text-list', {
title: 'RichText List',
icon: 'list-ul',
category: 'text',
attributes: {
items: {
type: 'array',
default: [],
},
},
edit: (props) => {
const { attributes, setAttributes } = props;
const { items } = attributes;
const blockProps = useBlockProps();
const onChangeItem = (index, newContent) => {
const newItems = [...items];
newItems[index] = newContent;
setAttributes({ items: newItems });
};
return (
<div {...blockProps}>
{items.map((item, index) => (
<div key={index}>
<BlockControls>
<RichText
tagName="li"
value={item}
onChange={(newContent) => onChangeItem(index, newContent)}
/>
</BlockControls>
</div>
))}
<RichText.Block
tagName="ul"
value=""
onChange={(newContent) => setAttributes({ items: [newContent] })}
/>
</div>
);
},
save: (props) => {
const { attributes } = props;
const { items } = attributes;
const blockProps = useBlockProps.save();
return (
<ul {...blockProps}>
{items.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
);
},
});
通过这种方式,你可以在Gutenberg中创建一个包含RichText的无序列表块,从而实现更丰富的内容展示。
领取专属 10元无门槛券
手把手带您无忧上云