-
Notifications
You must be signed in to change notification settings - Fork 732
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在 React.StrictMode 下无法使用 #201
Comments
@tint "react": "^17.0.2",
"@douyinfe/semi-ui": "^2.0.1",
"typescript": "^4.3.2",
"vite": "^2.6.4", 以上版本搭配,没有出现你叙述的情况。 |
这个问题是因为组件内部会使用到React.findDOMNode,这个API目前在Tooltip、Popover等场景下暂时无法取代。例如
Tooltip必须通过findDOMNode来获取Component的实际DOM元素,然后调用getBoudingRect等API去获取实际位置,从而
该类场景通过ref无法完全取代的,所以还没有办法完全移除。 暂时不计划做处理。 |
@pointhalo 可以参考下别的 UI 库,据我所知 blueprintjs 新版本就移除了 findDOMNode |
好的,后续我们看下其他类似库的做法参考一下 |
冒昧问这个还打算处理吗?我看 mui 在 React.Strict 下好像也没有这个 |
事实上,mui为了移除 findDOMNode ,在他们v4-> v5 的升级中,做了一个breaking change,对使用上做了限制,要求children必须实现ref的转发。 正如我上一次的回复,如果这个Component本身是一个自定义组件,但它没有做任何ref相关的绑定,在现有的Semi版本下,也是能正确地展示浮层相关的
如果我们要移除 findDOMNode,在这种情况下,就必须要要求 Select需要forwardRef并且将其 ref 转发到 Trigger(也就是Select的点击触发器上 ) 因此,我们短期内不考虑跟进这个问题。可能会在后续合适的大版本完成这个warning的移除。 |
@pointhalo谢谢您的解释,非常清楚,学习到了 👍 刚开始在新项目里用你们的 UI 框架,设计非常漂亮,比 mui, antd 和 tdesign 都要漂亮,希望 Semi Pro 也能早点出来,这样做 b 端产品可以又漂亮又有效率。 |
React 19 彻底移除了 findDOMNode API,这个问题是不是有必要重启了 |
会在最终做 v19的兼容适配时处理,但不是现在。还有比较长的时间窗口。19目前还处于rc阶段,我们内部基本不会有人用于正式项目中。breaking change式的更新对现阶段的旧有用户来说是无谓的损耗。 |
期待这个问题的解决: 我个人是个完美强迫症,所以还是很期待官方的解决的😂 |
@pointhalo 想请教大佬一个你们可能觉得弱智的问题,为什么你们都这么热爱 React 而不是 Vue 呢?是因为开发习惯、生态、还是别的什么原因呢?😂 React 到底有什么大魔法呢? |
semi-ui version
报错信息
Steps to reproduce 复现步骤
Reproducible code 复现代码
The text was updated successfully, but these errors were encountered: