Попробуйте это
<div contentEditable='true' dangerouslySetInnerHTML={{ __html: props.htmlContent }}></div>
Непосредственный эффект от использования внутреннего HTML против dangerouslySetInnerHTML
идентичен - узел DOM обновится с введенным HTML.
Однако За кулисами, когда вы используете dangerouslySetInnerHTML
, это дает React знать, что HTML внутри этого компонента не то, о чем он заботится.
Поскольку React использует виртуальный DOM, когда он идет для сравнения различий по отношению к фактическому DOM, он может напрямую обходить проверку дочерних узлов этого узла, потому что он знает, что HTML исходит из другого источника. Таким образом, производительность повышается.
Что более важно - если вы просто используете inner HTML, React не сможет узнать, был ли изменен узел DOM. В следующий раз, когда вызывается функция рендеринга, React перезапишет содержимое, которое было введено вручную, с тем, что, по его мнению, должно быть правильным состоянием этого узла DOM.
Ваше решение использовать componentDidUpdate
, чтобы всегда гарантировать содержание c Я полагаю, что это сработает, но во время каждого рендеринга может быть fla sh.
Reference Опасно установлен внутренний HTML