-
Couldn't load subscription status.
- Fork 2.5k
feat(Button): unified provision of custom prefixCls #6966
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
base: feature
Are you sure you want to change the base?
feat(Button): unified provision of custom prefixCls #6966
Conversation
Summary of ChangesHello @EmilyyyLiu, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 此拉取请求旨在为组件提供统一的 CSS 类名前缀管理机制。通过在 ConfigProvider 中引入 prefixCls 属性和 getPrefixCls 方法,开发者可以更灵活地控制组件的样式命名空间,避免潜在的样式冲突,并提高组件库的可定制性。Button 组件已率先适配此新机制,并增加了相应的测试和文档。 Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## feature #6966 +/- ##
========================================
Coverage 92.95% 92.95%
========================================
Files 337 337
Lines 7368 7370 +2
Branches 1871 1871
========================================
+ Hits 6849 6851 +2
Misses 483 483
Partials 36 36 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request successfully unifies the way custom class prefixes are provided by introducing a getPrefixCls function in the ConfigProvider. The changes are well-implemented across the Button component, its tests, and the ConfigProvider itself. The documentation has also been updated accordingly.
I have one suggestion regarding performance optimization in the ConfigProvider component.
| const getPrefixCls = (suffixCls?: string, customizePrefixCls?: string) => { | ||
| if (customizePrefixCls) { | ||
| return customizePrefixCls | ||
| } | ||
| const mergedPrefixCls = | ||
| config.prefixCls || parentConfig.prefixCls || defaultPrefixCls | ||
| return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For performance optimization, it's a good practice to memoize functions that are passed down through React context. The getPrefixCls function is recreated on every render of ConfigProvider, which can cause unnecessary re-renders in consuming components.
Consider wrapping getPrefixCls with useCallback to prevent this. You'll also need to import useCallback from react.
Here's an example:
const getPrefixCls = useCallback((suffixCls?: string, customizePrefixCls?: string) => {
if (customizePrefixCls) {
return customizePrefixCls
}
const mergedPrefixCls =
config.prefixCls || parentConfig.prefixCls || defaultPrefixCls
return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls
}, [config.prefixCls, parentConfig.prefixCls])6401a9e to
d1de569
Compare

统一添加自定义class 前缀
关联issue #6960