.createElement()与HTML

时间:2019-05-30 08:17:48

标签: javascript reactjs

我的目标是使用wp.element中的.createElement()添加HTML,但它会以文本形式输出,例如:

wp.element.createElement(
        Meta,
        {   
            className: 'TEST',
            title: 'TEST',
            initialOpen: true,
        },  
        'Here is html: <input type="text">'
);

我在这里想念什么?

2 个答案:

答案 0 :(得分:2)

如果您希望正确地在DOM中使用wp.element.render与创建的元素。

请参见文档中的示例:

<div id="greeting"></div>

<script>
function Greeting( props ) {
    return wp.element.createElement( 'span', null, 
        'Hello ' + props.toWhom + '!'
    );
}

wp.element.render(
    wp.element.createElement( Greeting, { toWhom: 'World' } ),
    document.getElementById( 'greeting' )
</script>

答案 1 :(得分:1)

在您的链接中看到的话,WordPress的使用有反应

Element is, quite simply, an abstraction layer atop React.

这意味着您使用顶级的React api

https://reactjs.org/docs/react-api.html#createelement

React无法传递您像innerHtml这样添加js代码的权限,因为这很危险(任何脚本都可以从文本运行)。

例如,某些坏蛋可以使用此漏洞进行XSS攻击。

但是,如果您需要在元素中添加一些HTML,则可以使用方法dangerouslySetInnerHTML

https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml

function createMarkup() {
  return {__html: 'First &middot; Second'};
}

React.createElement('h1', { dangerouslySetInnerHTML: createMarkup() }, `Welcome to react world`)

https://github.com/purescript-contrib/purescript-react/issues/53#issuecomment-164175324