在挂载之前从JSX获取

在挂载之前从JSX获取

是否可以在挂载之前从JSX获取元素对象?

以下面的代码为例:

import React from 'react';
import ReactDOM from 'react-dom';
...
const container = <div id='something'>My simple div</div>;
const element = container.??? // Get Node/Element/HTMLElement from 'container'.


我知道有一个ref attribute,但是这种方法似乎不起作用。另外,与内联相比,我发现它有点麻烦。

let element = null;
const container = <div id='something' ref={(containerElement) => {element = containerElement;}} />;


这可能不起作用,因为尚未安装组件(这是我正在寻找的用例)。

最佳答案

真正的DOM元素在呈现虚拟React元素时出现,因此您需要先呈现container,然后使用ref之一:



const container = <div ref={_element => element = _element}>My simple div</div>;
let element;

ReactDOM.render(container, document.body);
alert(element);

<script src="//cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js"></script>





或DOM查询:



const container = <div id="something">My simple div</div>;

ReactDOM.render(container, document.body);
const element = document.querySelector('#something');
alert(element);

<script src="//cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js"></script>

关于javascript - 有没有办法在挂载之前从JSX获取Node/Element/HTMLElement?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49376518/

10-09 20:54