After upgrading to React 18, I am having issues with Leaflet popup rendering.
It seems the new rendering function has become asynchronous, which breaks Leaflet popup display (because Leaflet needs to compute the size of the popup for positioning, but now it gets an empty content since React has not yet rendered the popup).
Before (working as expected):
marker.bindPopup(() => {
var div = document.createElement('div');
ReactDOM.render(<MyPopup />);
console.log(div.innerHTML); // <div>[...]</div>
return div;
});
With React 18 (positioning broken):
marker.bindPopup(() => {
var div = document.createElement('div');
createRoot(div).render(<MyPopup />);
console.log(div.innerHTML); // empty string!
return div;
});
Is there any way to force React 18 to render the popup before returning the div
?
Thanks in advance for your help and ideas