升级到 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?
预先感谢您的帮助和想法