react触发器调整大小但实际上不调整屏幕大小

IT技术 javascript reactjs
2021-05-16 17:14:20

我试图触发调整大小而不实际调整屏幕大小,因为它修复了我的滑块。

  window.dispatchEvent(new Event('resize')); 

上面的代码不起作用,有没有人有任何其他方法可以在react中触发调整大小?

不得不使用jQuery:

jQuery(window).resize();
2个回答

我认为你以错误的方式看待这个问题。

在初始视图期间,您永远不应该依赖调整大小。

所以你的滑块代码在处理图像时有一个典型的尺寸问题(在加载图像之前读取宽度)。

但如果你还想尝试那种方式

这可能取决于您在哪里发送此事件?如果在渲染 Slider 之前调度它,它将无法工作。

一个解决方案可能是使用 React.useEffect:

function MySlider() {
  React.useEffect(() => {
    // dispatch it once mounted
    window.dispatchEvent(new Event('resize')); 
  }, []);
  return <div>Your stuff</div>
}

OpenLayer Map 和 D3 图表也遇到了同样的问题。问题是当您调度该窗口调整大小事件时,组件未安装。解决方法是在触发事件时引入延迟。

setTimeout(
()=>{window.dispatchEvent(new Event('resize'));},
2500
);

它应该工作。