WordPress Gutenberg Отображение пользовательских блоковтеги появляются на интерфейсе - PullRequest
0 голосов
/ 30 октября 2019

Я создал блок Гутенберга в своей функции редактирования, в которой используется компонент <RichText />, показанный в приведенном ниже коде (с attributes):

attributes: {
        firstBlockTitleText: {
            type: 'string',
            source: 'attribute',
            attribute: 'h2'
        },
        secondBlockTitleText: {
            type: 'string',
            source: 'attribute',
            attribute: 'p'
        }
    },

    edit: ({setAttributes, attributes}) => {

        const onChangeFirstBlockTitle = newTitle => {
            setAttributes({firstBlockTitleText: newTitle})
        }

        const onChangeSecondBlockText = newText => {
            setAttributes({secondBlockTitleText: newText})
        }

        return (
            <>
                <div>
                    <div>
                        <h2><RichText value={attributes.firstBlockTitleText} placeholder={'Enter Text'} onChange={onChangeFirstBlockTitle} /></h2>
                    </div>
//Rest of code
</>

Работает нормально для элементов с одной подкладкой, что означаетПока я не ввожу многострочный заголовок, текст на передней части, как и ожидалось.

Однако, скажем, я пытаюсь добавить многострочный текст в область, он появляется с тегами <br>в тексте, как показано ниже:

Lorem Ipsum<br> is placeholder text<br> used for<br> testing text<br> in content blocks<br> such as this.

Примечание: это выглядит так, только когда я сохраняю блок и отображаю его на передней панели, а не на экране редактора.

Очевидно, что эти теги <br> предназначены для разрывов строк, которые происходят в тексте, который был введен, и он отображается во внешнем интерфейсе WordPress, потому что перед экранированием HTML-кода перед вводом в базу данных WordPress выполняется экранирование. Но почему появляется этот конкретный тег, а не, скажем, теги <h2> снаружи?

Кроме того, я хотел бы знать, как избавиться от него, не выполняя JS str.replace()если возможно. Спасибо!

...