导出校验改用落盘后的权威表单

- packageAll 的本地校验改用 effectiveFormRef.current ?? form,避免 refresh/flush 后仍用陈旧闭包放行盘上的非法值
This commit is contained in:
2026-10-07 14:13:16 +08:00
parent e830034d03
commit 8e3f0b8920
@@ -827,8 +827,11 @@ export function useTaonierExport({
// 没解决的冲突 / 字段红字:盘上的内容和用户看到的不一致,先别打包。
if (conflict || fieldErrors.length > 0) return false;
// 盘上的表单要能过本地校验:校验不过时留在表单上,不跑构建(对齐「校验不过不触宿主」)。
if (form && validateTaonierForm(form).length > 0) {
setFieldErrors(validateTaonierForm(form));
// `form` 是 render 闭包快照,前面的 `refresh()`/flush 可能已把更权威的落盘表单写进
// `effectiveFormRef`;这里必须校验真正落定的那份,否则会放行盘上的非法值。
const effectiveForm = effectiveFormRef.current ?? form;
if (effectiveForm && validateTaonierForm(effectiveForm).length > 0) {
setFieldErrors(validateTaonierForm(effectiveForm));
setDirty(false);
return false;
}