При регистрации нового блока я не могу установить значение по умолчанию, если использую RichText
с тегом multiline
attributes: {
header: {
type: 'string',
source: 'text',
selector: 'h2',
default: 'default',
},
text: {
type: 'array',
source: 'children',
selector: 'div',
default: 'Lorem Ipsum Dolor Sit Amet',
// also tested, same result
// default: ['Lorem Ipsum Dolor Sit Amet', 'test', 'test2'],
// default: () => <p>Lorem Ipsum Dolor Sit Amet</p>,
// default: [() => <p>Lorem Ipsum Dolor Sit Amet</p>],
},
},
edit: ({ attributes: { header, text }, setAttributes }) => {
const blockProps = useBlockProps()
return (
<div {...blockProps}>
<RichText tagName = "h2" placeholder = {'Header'} onChange = {header => setAttributes({ header })} value = {header} />
<RichText
tagName = "div"
multiline = "p"
placeholder = {'Write here the description'}
onChange = {text => setAttributes({ text })}
value = {text}
/>
</div>
)
},
Если я уберу строку multiline = "p"
, я увижу текст по умолчанию, но с ним я ничего не увижу
Где ошибка?
Я смог сделать это, используя то, что вы собираете, когда редактируете текст вручную.
default: [
{ type: 'p', props: { children: ['Lorem Ipsum Dolor Sit Amet'] } },
{ type: 'p', props: { children: ['test'] } },
],
Альтернативный упрощенный способ использования атрибутов для установки значения по умолчанию для RichText с помощью multiline = "p"
:
attributes: {
...
text: {
type: 'string', // changed from array
source: 'children',
selector: 'div',
default: [<p>Lorem Ipsum Dolor Sit Amet</p>, <p>test</p>, <p>test2</p>]
}