diff --git a/components/config-provider/__tests__/index.test.js b/components/config-provider/__tests__/index.test.js
index 678e3e202f..229f64163c 100644
--- a/components/config-provider/__tests__/index.test.js
+++ b/components/config-provider/__tests__/index.test.js
@@ -42,4 +42,16 @@ describe('ConfigProvider', () => {
expect(wrapper.text()).toContain('empty placeholder');
});
+
+ it('nest prefixCls', () => {
+ const wrapper = mount(
+
+
+
+
+ ,
+ );
+
+ expect(wrapper.find('button').props().className).toEqual('bamboo-btn');
+ });
});
diff --git a/components/config-provider/context.tsx b/components/config-provider/context.tsx
index 5a55cfeb9c..09530273bd 100644
--- a/components/config-provider/context.tsx
+++ b/components/config-provider/context.tsx
@@ -29,7 +29,7 @@ export const ConfigContext = React.createContext({
getPrefixCls: (suffixCls: string, customizePrefixCls?: string) => {
if (customizePrefixCls) return customizePrefixCls;
- return `ant-${suffixCls}`;
+ return suffixCls ? `ant-${suffixCls}` : 'ant';
},
renderEmpty: defaultRenderEmpty,
diff --git a/components/config-provider/index.tsx b/components/config-provider/index.tsx
index bb77deb6c8..eef967ae4b 100644
--- a/components/config-provider/index.tsx
+++ b/components/config-provider/index.tsx
@@ -45,12 +45,16 @@ export interface ConfigProviderProps {
}
class ConfigProvider extends React.Component {
- getPrefixCls = (suffixCls: string, customizePrefixCls?: string) => {
- const { prefixCls = 'ant' } = this.props;
+ getPrefixClsWrapper = (context: ConfigConsumerProps) => {
+ return (suffixCls: string, customizePrefixCls?: string) => {
+ const { prefixCls } = this.props;
- if (customizePrefixCls) return customizePrefixCls;
+ if (customizePrefixCls) return customizePrefixCls;
- return suffixCls ? `${prefixCls}-${suffixCls}` : prefixCls;
+ const mergedPrefixCls = prefixCls || context.getPrefixCls('');
+
+ return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;
+ };
};
renderProvider = (context: ConfigConsumerProps, legacyLocale: Locale) => {
@@ -70,7 +74,7 @@ class ConfigProvider extends React.Component {
const config: ConfigConsumerProps = {
...context,
- getPrefixCls: this.getPrefixCls,
+ getPrefixCls: this.getPrefixClsWrapper(context),
csp,
autoInsertSpaceInButton,
locale: locale || legacyLocale,