96SEO 2026-08-02 03:09 1
在使用 @ant-design/pro-components 的 DragSortTable 组件时当使用者勾选表格行后表格滚动位置会自动重置到第一行,影响使用者体验。

:你勾选一行,表格就跳回顶部了。
DragSortTable 位于 @ant-design/pro-table/es/components/DragSortTable/index.js其主要实现如下:
function DragSortTable { // ... 省略部分代码 return wrapSSR(
/*#__PURE__*/ _jsx(
ProTable。_objectSpread(
_objectSpread,{},{
columns:
=== null || _orProps$columns === void?void : _orProps$columns.map {
// 处理 dragSortKey 列
}),onLoad: wrapOnload。rowKey: rowKey,tableViewRender: function tableViewRender {
return /*#__PURE__*/ _jsx;},dataSource: dataSource,components: components。onDataSourceChange: onDataSourceChange,},),),);}
tableViewRender 每次渲染都是新函数
tableViewRender: function tableViewRender {
return /*#__PURE__*/ _jsx(DndContext。{
children: defaultDom,});怎么说呢,}
tableViewRender 是在组件函数体内定义的函数。打个比方:
DndContext 重新初始化
// useDragSort.js 第 - 行var memoDndContext = useMemo(
function {
return function {
return /*#__PURE__*/ _jsx(DndContext。{
modifiers:,sensors: sensors,collisionDetection: closestCenter,onDragEnd: handleDragEnd,children: contextProps.children,});},},);说起来,
memoDndContext 被正确 memo 化。handleDragEnd 依赖 dataSource变化时重新创建。举例说明:
You 家里电视机每次有人敲门都会重启一次因为 “开门” 动作被错误地和 “看电视”绑在一起了。
SOrtableContext 的 items 变化
var DraggableContainer = useRefFunction { return /#PURE/jsx(SortableContext。{ items的观点是,dataSource.map{return index===null||index===void?说起来,void : index.toString;}),strategy:verticalListSortingStrategy。children: /*#PURE*/jsx),});}),
- Sor ta ble Context 的 items 与数据源绑定,一旦引用改变会触发 DOM 重建。
- This leads to a full re-render of table.
↓selectedRowKeys 状态变化 ↓父组件重新渲染 ↓ DragSortTable 接收新 props ↓ tableViewRender 函数引用变化 ↓ ProTable 检测到 props 变化 ↓ 内部 useDragSort hook 执行 ↓ handleDragEnd 因 dataSource依赖重新创建 ↓ memoDndContext 创建 ↓ DndContext组件 初始化 ↓ SortableContext 初始化 ↓ 表格 DOM 重建 ↓ 滚动位置重置到顶部 💥
- 没有额外的 Context 层;其实,勾选只影响 Checkbox 状态; - DOM结构保持稳定; - 浏览器负责滚动状态,不受 React 渲染周期影响; User pain point: 对比普通表格。你仅需点击即可选择,而 DragSortTable 在一次勾选后就把页面卷回最顶端,让人抓狂。
DndContext 提高至 ProTable 外部,使拖拽上下文与表格渲染分离。这样即使 rowSelection 改变。也不会触发整个拖拽程序重启,从而避免滚动位置丢失。**
scss
┌─────────────────────────────────────────┐│ DndContext ││ ┌───────────────────────────────────────┐│ │ │ SortableCon text ││ │ ┌───────────────────────┐│ │ │ │ Pro Table ││ │ │ ...
User pain point: 把 Dn d Context 嵌套在内部就像把电线塞进热锅里每一次轻微点击都可能导致整条线路烧毁。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback