Skip to content

plugin-form: EmbeddableForm 的「Redirecting in N seconds…」是一次性渲染的静态数字,整个等待期间不递减 #5083

Description

@yinlianghui

修 objectui#5073(PR #5082)时路过发现,未在该 PR 中修(#5073 的完成范围是「文案跟随裁定」,不含文案的动态性)。未指派。

事实

packages/plugin-form/src/EmbeddableForm.tsx 致谢面板的倒计时文案把秒数渲染一次就不再变:

  • 模板 texts.redirecting ?? 'Redirecting in {{seconds}} seconds…'({{seconds}} 的文档说明是 "the remaining seconds")在渲染期做一次 Math.ceil(delayMs / 1000) 替换,组件里没有任何 setInterval / 逐秒 state,所以 3000ms 默认延迟下,提交者看到的是整整三秒钟纹丝不动的「Redirecting in 3 seconds…」,直到页面被换掉。
  • 十个 locale 的 publicForm.redirecting 都是同一记法(将在 {{seconds}} 秒后跳转…Redirecting in {{seconds}} seconds… 等),即这个「剩余秒数」的语义是全语言一致地声明出来的,只是没有人在减它。

PR #5082 之后该行只在目的地被接受时渲染(秒数取被接受目的地一同捕获的 delayMs),因此这条只剩「数字不动」这一点 —— 它在 #5082 前后都一样。

为什么按 observation 立(而不是 defect)

数字在渲染那一刻是准确的,等待也确实照这个时长走完,没有任何功能受影响;差别只是文案自称 "remaining" 却不 remaining。按「不动的秒数 vs 逐秒递减」这是打磨类,故打 finding、不打 pm:queue

如果分诊认为「对公众说了一句随时间变假的话」属于用户可见的不准确(#5073 家族正是这个论证),请直接改判为 defect 并加 pm:queue —— 立卡时的严重度判断本就不可靠,这里只作平铺陈述。

若要修,形状

一个以被接受目的地为键的 setInterval(与 PR #5070 建立的「等待由组件持有」同一所有权模型:effect 拥有它,unmount 与 handleReset 各自取消),或者干脆把模板改成不承诺剩余量的说法。前者要注意别再造一个无人拥有的定时器 —— 那正是 #5049 修掉的东西。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions