@6thquake/react-material
Version:
React components that implement Google's Material Design.
33 lines (29 loc) • 922 B
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React from 'react';
import { LocaleContext } from './LocaleProvider'; // 当 存在于 y 中的key,在x 中值为 undefined 时,则取 y[key]
const merge = (x, y) => {
const result = _extends({}, x);
Object.keys(y).map(key => {
if (result[key] === undefined) {
result[key] = y[key];
}
});
return result;
};
const withLocale = (options = {}) => Component => {
const name = options.name || Component.name;
return function LocaleComponent(props) {
return React.createElement(LocaleContext.Consumer, null, value => {
const {
locale,
changeLocale
} = value;
const mergeProps = merge(props, value[name] || {});
return React.createElement(Component, _extends({}, mergeProps, {
locale: locale,
changeLocale: changeLocale
}));
});
};
};
export default withLocale;