javascript-React.js:批处理setState以确保仅一个DOM布局/绘制

我有一个在做setState的onWheel处理程序,它引起的布局比绘画要多:

…通过将事件值更改批处理为一个setState来避免这种情况的任何良好模式?

(我以为这个内置组件有些神奇.)

解决方法:

就我而言,这似乎可行.将更改缓存在onWheel处理程序中,然后使用requestAnimationFrame进行调度以进行计算并实际执行setState.

...

zoomFactor: 0,
zoomX: 0,
zoomY: 0,
onWheel: function (event) {
  this.zoomFactor += event.deltaY;
  this.zoomX = event.nativeEvent.pageX;
  this.zoomY = event.nativeEvent.pageY;
  requestAnimationFrame(this.scheduleZoom);
},
scheduleZoom: function () {

  var scale = ...; // Calc new scale, x, and y
  this.zoomFactor = 0;

  this.setState({
    scale: scale,
    x: x,
    y: y
  });
},

...

有关批处理所有更改的较低级别的选项,请参见https://github.com/petehunt/react-raf-batching

上一篇:javascript-ReactJS:使用alert()从用户那里获取输入


下一篇:javascript-Reactjs-强制刷新的工作流程是什么?