Skip to content

🐛[BUG] ProTable actionRef.reset() 請求參數同步問題 #9351

@leadingtw273

Description

@leadingtw273

提问前先看看:

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

🐛 bug 描述

調用 actionRef.current?.reset() 後,雖然表單欄位正確重置為初始值,但發起的請求參數在 2.8.10 版本會是「{}」空物件,而在 PR #9216 合併修正之後其參數仍是重置前的舊值,導致請求參數與表單顯示不一致。

根本原因:resetAll 函數中調用 formRef.resetFields() 後,沒有同步更新 formSearch 狀態,導致 useFetchData 使用的仍是舊的參數。

📷 复现步骤

  1. 設置 ProTable 的 columns 帶有 initialValue(如 keyword: "initial-value", status: "open"
  2. 修改表單值(如改為 keyword: "modified", status: "closed"
  3. 點擊「查詢」→ 確認請求參數是修改後的值
  4. 調用 actionRef.current?.reset()
  5. 觀察請求參數

🏞 期望结果

調用 actionRef.reset() 後:

  1. 表單欄位重置為初始值 ✅(目前正常)
  2. 請求參數也應該是初始值 ❌(目前有問題)

💻 复现代码

https://codesandbox.io/p/devbox/github-issue-protable-chu-shi-zai-ru-rao-guo-yan-zheng-forked-644pm4

© 版本信息

  • ProComponents 版本: ^2.8.10
  • umi 版本: N/A
  • 浏览器环境: Chrome
  • 开发环境: Windows(WSL)

🚑 其他信息

📝 預期改動

文件:src/table/Table.tsx
resetAll 函數(約第 1046-1066 行)需在 formRef.resetFields() 後同步更新 formSearch

resetAll: () => {
  // 清空选中行
  onCleanSelected();

  // 清空 toolbar 搜索
  counter.setKeyWords(undefined);
  
  // 重置页码
  action.setPageInfo({
    current: 1,
  });

  // 重置绑定筛选值
  setProFilter(defaultProFilter);
  // 重置绑定排序值
  setProSort(defaultProSort);

  // 重置表單
  formRef?.current?.resetFields();
  const values = formRef?.current?.getFieldsFormatValue?.(); // <-- 獲取值
  setFormSearch(values); // <-- 同步更新 formSearch
},

✅ 預期測試項

# 測試場景 操作步驟 預期結果
1 多欄位初始值 多個欄位有 initialValue → 調用 reset() 所有欄位與請求參數都正確回到初始值

Metadata

Metadata

Assignees

No one assigned

    Labels

    ⭕️ bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions