diff --git a/src/config-provider/ConfigProvider.tsx b/src/config-provider/ConfigProvider.tsx index 3a44e4381..82388e019 100644 --- a/src/config-provider/ConfigProvider.tsx +++ b/src/config-provider/ConfigProvider.tsx @@ -1,12 +1,19 @@ import React from 'react'; -import _merge from 'lodash/merge'; -import ConfigContext, { Config, defaultGlobalConfig } from './ConfigContext'; +import _mergeWith from 'lodash/mergeWith'; +import ConfigContext, { Config, defaultGlobalConfig, GlobalConfig } from './ConfigContext'; export interface ConfigProviderProps extends Config { children: React.ReactNode; } -export const merge = _merge; +// deal with https://github.com/lodash/lodash/issues/1313 +export const merge = (src: GlobalConfig, config: GlobalConfig) => + _mergeWith(src, config, (objValue, srcValue) => { + if (Array.isArray(objValue)) { + return srcValue; + } + }); + export default function ConfigProvider({ children, globalConfig }: ConfigProviderProps) { const mergedGlobalConfig = merge(defaultGlobalConfig, globalConfig); return {children};