Skip to content

fix(Select): use useComposeRefs for React 19 - #4360

Open
RylanBot wants to merge 2 commits into
developfrom
rylan/fix/select/ref
Open

fix(Select): use useComposeRefs for React 19#4360
RylanBot wants to merge 2 commits into
developfrom
rylan/fix/select/ref

Conversation

@RylanBot

Copy link
Copy Markdown
Collaborator

🤔 这个 PR 的性质是?

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

💡 需求背景和解决方案

📝 更新日志

  • 本条 PR 不需要纳入 Changelog

tdesign-react

@tdesign-react/chat

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • Changelog 已提供或无须提供

@RylanBot RylanBot added the WIP work in porgess label Aug 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 115 kB

ℹ️ View Unchanged
Filename Size
packages/tdesign-react-aigc/es/_chunks/dep-a956212b.js 92.6 kB
packages/tdesign-react-aigc/es/_util/reactify.js 3.89 kB
packages/tdesign-react-aigc/es/_util/useDynamicStyle.js 615 B
packages/tdesign-react-aigc/es/attachments/index.js 354 B
packages/tdesign-react-aigc/es/chat-actionbar/index.js 360 B
packages/tdesign-react-aigc/es/chat-engine/components/activity/index.js 285 B
packages/tdesign-react-aigc/es/chat-engine/components/activity/registry.js 1.01 kB
packages/tdesign-react-aigc/es/chat-engine/components/activity/render.js 1.62 kB
packages/tdesign-react-aigc/es/chat-engine/components/activity/types.js 106 B
packages/tdesign-react-aigc/es/chat-engine/components/index.js 490 B
packages/tdesign-react-aigc/es/chat-engine/components/provider/agent-state.js 556 B
packages/tdesign-react-aigc/es/chat-engine/components/toolcall/index.js 422 B
packages/tdesign-react-aigc/es/chat-engine/components/toolcall/registry.js 969 B
packages/tdesign-react-aigc/es/chat-engine/components/toolcall/render.js 2.86 kB
packages/tdesign-react-aigc/es/chat-engine/components/toolcall/types.js 208 B
packages/tdesign-react-aigc/es/chat-engine/hooks/index.js 434 B
packages/tdesign-react-aigc/es/chat-engine/hooks/useAgentActivity.js 841 B
packages/tdesign-react-aigc/es/chat-engine/hooks/useAgentState.js 1.29 kB
packages/tdesign-react-aigc/es/chat-engine/hooks/useAgentToolcall.js 851 B
packages/tdesign-react-aigc/es/chat-engine/hooks/useChat.js 933 B
packages/tdesign-react-aigc/es/chat-engine/index.js 770 B
packages/tdesign-react-aigc/es/chat-filecard/index.js 354 B
packages/tdesign-react-aigc/es/chat-loading/index.js 360 B
packages/tdesign-react-aigc/es/chat-markdown/index.js 406 B
packages/tdesign-react-aigc/es/chat-message/index.js 367 B
packages/tdesign-react-aigc/es/chat-sender/index.js 359 B
packages/tdesign-react-aigc/es/chat-thinking/index.js 387 B
packages/tdesign-react-aigc/es/chatbot/index.js 426 B
packages/tdesign-react-aigc/es/index.js 998 B
packages/tdesign-react-aigc/es/style/index.js 146 B

compressed-size-action::tdesign-react-chat

@tdesign-bot

tdesign-bot commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

TDesign Component Site Preview Open

Component Preview
tdesign-react 完成
@tdesign-react/chat 完成

@pkg-pr-new

pkg-pr-new Bot commented Aug 17, 2026

Copy link
Copy Markdown
  • tdesign-react-demo

    npm i https://pkg.pr.new/Tencent/tdesign-react@4360
    
    npm i https://pkg.pr.new/Tencent/tdesign-react/@tdesign-react/chat@4360
    

commit: 1e145d1

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Size Change: +854 B (+0.09%)

Total Size: 932 kB

📦 View Changed
Filename Size Change
packages/tdesign-react/dist/tdesign.js 514 kB +564 B (+0.11%)
packages/tdesign-react/dist/tdesign.min.js 301 kB +290 B (+0.1%)
ℹ️ View Unchanged
Filename Size
packages/tdesign-react/dist/reset.css 1.93 kB
packages/tdesign-react/dist/tdesign.css 61 kB
packages/tdesign-react/dist/tdesign.min.css 55.2 kB

compressed-size-action::tdesign-react

@RylanBot
RylanBot force-pushed the rylan/fix/select/ref branch from 268f5a8 to 1104131 Compare August 17, 2026 09:14
React 19 detaches/reattaches refs and counts commit-phase updates as
nested, so several long-standing patterns now blow the update depth
limit when a Select opens inside a Dialog:

- usePopper: drop flushSync around setState in popper's write phase and
  bail out when the computed styles/attributes are unchanged
- Portal: stop keying the append/remove layout effect on triggerNode,
  whose identity changes on every render while the panel is open
- Option: use an object ref instead of useDomRefCallback so mounting an
  option no longer dispatches setState from a ref callback
- useRipple: accept a RefObject so callers can keep the DOM out of state
- Input/SelectInput: pin useImperativeHandle deps and read the merged
  refs lazily, so the handle identity stops changing every render

Co-authored-by: Cursor <cursoragent@cursor.com>
@RylanBot
RylanBot force-pushed the rylan/fix/select/ref branch from 514b0b8 to 1e145d1 Compare August 17, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WIP work in porgess

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants