tka*_*h99 4 html javascript reactjs
我使用 Wordpress 作为我的 CMS,并在 React 中创建一些页面并渲染它。我有一个用例,我需要在 React 组件内渲染 HTML DOM 节点。我在 querySelector() 的帮助下获取 DOM 节点,它返回 DOM 节点。在 React 中,我尝试使用 React.createElement 来渲染它。但它在我的页面上呈现为 [object HTMLDivElement]。
render() {
const { reactPages } = this.props;
const innerPages = React.createElement('div', {id: "myDiv"}, `${reactPages.children[0]}`);
return (
<div className="react-cmp-container">
<h3>React Container</h3>
{ innerPages }
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试的另一件事是使用angerlySetInnerHTML:
rawMarkUp = () => {
const { reactPages } = this.props;
return {__html: reactPages}
}
render() {
const innerPages = React.createElement('div', {id: "myDiv"}, )
return (
<div className="react-cmp-particle-container">
<h3>React Particle Container</h3>
<div dangerouslySetInnerHTML={this.rawMarkUp()}></div>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
kca*_*kca 10
不建议这样做。以后可能会带来很多麻烦。反正, ...
querySelector()返回一个DOM-element(或此类的集合)。
React.createElementReact.createElement不起作用,因为它需要另一个,或者一个,而不是一个。React.ElementstringDOM-element
dangerouslySetInnerHTMLdangerouslySetInnerHTML不起作用,因为它需要一个 HTML字符串,而不是.DOM-element
您可以使用domElement.innerHTMLHTML 字符串并将其放入 中dangerouslySetInnerHTML,但这可能无法按照您的需要表示 DOM 元素。
useRef您可以将 a 添加ref到由 React 呈现的某些元素。这使您可以访问相应的DOM-element (由 React 渲染的),并且您可以使用普通 DOM 方法注入您的DOM-element (由 React 返回的querySelector()) 。
这会使 React 无法“跟踪正在发生的事情”,并且您可能会遇到不一致的状态和难以理解的错误。
例如:
export const StaticHtml = (props)=>{
const ref = useRef();
useEffect(() =>{
var elm = document.getElementById('some-static-html');
ref.current.appendChild(elm);
}, []);
return (<div ref={ ref }>
some div
</div>);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9566 次 |
| 最近记录: |