小编pie*_*une的帖子

React 18:如何强制同步渲染?

升级到 React 18 后,我遇到了 Leaflet 弹出窗口渲染问题。

看来新的渲染函数已经变成了异步,这破坏了Leaflet弹出窗口的显示(因为Leaflet需要计算弹出窗口的大小来定位,但现在它得到的是空内容,因为React尚未渲染弹出窗口)。

之前(按预期工作):

marker.bindPopup(() => {
  var div = document.createElement('div');
  ReactDOM.render(<MyPopup />);
  console.log(div.innerHTML); // <div>[...]</div>
  return div;
});
Run Code Online (Sandbox Code Playgroud)

使用 React 18(定位损坏):

marker.bindPopup(() => {
  var div = document.createElement('div');
  createRoot(div).render(<MyPopup />);
  console.log(div.innerHTML); // empty string!
  return div;
});
Run Code Online (Sandbox Code Playgroud)

有没有办法强制 React 18 在返回之前渲染弹出窗口div

预先感谢您的帮助和想法

javascript reactjs react-18

7
推荐指数
2
解决办法
2127
查看次数

标签 统计

javascript ×1

react-18 ×1

reactjs ×1