gpt4 book ai didi

javascript - 我如何进行同步 ReactDOM.render

转载 作者:数据小太阳 更新时间:2023-10-29 03:55:31 27 4
gpt4 key购买 nike

对于我的应用程序,我需要渲染一些子项,然后测量生成的 div。在伪代码中,它看起来像这样:

function getDims(child) {
var testEl = document.getElementById('test-el');
ReactDOM.render(child, testEl);
var dims = testEl.getBoundingClientRect();
ReactDOM.unmountComponentAtNode(testEl);
return dims;
}

不幸的是,根据文档 ReactDOM.render 将来可能会变成异步的。是否有一个面向 future 的选项来强制同步渲染,以便上述功能可以工作?

最佳答案

您可以将回调传递给 ReactDOM.render(ReactElm, DOMNode, callback)。一旦 ReactElm 加载到 DOMNode 中,就会执行 callback

希望这对您有所帮助!

function getDims(child) {
var testEl = document.getElementById('test-el');
ReactDOM.render(child, testEl, function(){
var dims = testEl.getBoundingClientRect();
ReactDOM.unmountComponentAtNode(testEl);
return dims;
});
}

使用示例:

class App extends React.Component{
render(){ return <h1>Hello</h1>}
}

ReactDOM.render(<App/>,
document.getElementById('app'),
() => console.log('Component Mounted'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

关于javascript - 我如何进行同步 ReactDOM.render,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com