蚂蚁Antd的fix table是如何做到表头和表身无延迟同步滚动的

  • 问题描述:
    公司用的是Material Ui,觉得蚂蚁表格的固定表头固定列很好,便阅读源码仿写,在表身滚动时,立即给表头节点设置scrollLeft属性,但是由于onScroll触发频率极高,表头滚动相对落后表身一点点,视觉效果较差,请问蚂蚁是如何做到表头和表身几乎无延迟同步滚动的
  • 蚂蚁的代码
function forceScroll(scrollLeft, target) {
    /* eslint-disable no-param-reassign */scrollLeft)
    if (target && target.scrollLeft !== scrollLeft) {
      target.scrollLeft = scrollLeft;
    }
    /* eslint-enable */

  }


var onScroll = function onScroll(_ref2) {
    var currentTarget = _ref2.currentTarget,
        scrollLeft = _ref2.scrollLeft;
    var mergedScrollLeft = typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;
    var compareTarget = currentTarget || EMPTY_SCROLL_TARGET;
    debugger
    if (!getScrollTarget() || getScrollTarget() === compareTarget) {
      setScrollTarget(compareTarget);
      forceScroll(mergedScrollLeft, scrollHeaderRef.current);
      forceScroll(mergedScrollLeft, scrollBodyRef.current);
    }

    if (currentTarget) {
      var scrollWidth = currentTarget.scrollWidth,
          clientWidth = currentTarget.clientWidth;
      setPingedLeft(mergedScrollLeft > 0);
      setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);
    }
  };
阅读 2.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题