From ba168b826f39b0b0fce3714de9c1fe4f0f55ed41 Mon Sep 17 00:00:00 2001 From: paranoidjk Date: Mon, 3 Jul 2017 16:57:11 +0800 Subject: [PATCH] refactor: use spread operator replace object-assign (#6677) --- components/_util/getLocale.tsx | 12 ++-- components/badge/ScrollNumber.tsx | 24 ++++--- components/carousel/index.tsx | 5 +- components/date-picker/RangePicker.tsx | 10 ++- components/date-picker/createPicker.tsx | 7 +- components/date-picker/index.tsx | 5 +- components/date-picker/locale/bg_BG.tsx | 10 +-- components/date-picker/locale/ca_ES.tsx | 10 +-- components/date-picker/locale/cs_CZ.tsx | 10 +-- components/date-picker/locale/de_DE.tsx | 10 +-- components/date-picker/locale/en_GB.tsx | 10 +-- components/date-picker/locale/en_US.tsx | 10 +-- components/date-picker/locale/es_ES.tsx | 10 +-- components/date-picker/locale/et_EE.tsx | 10 +-- components/date-picker/locale/fi_FI.tsx | 10 +-- components/date-picker/locale/fr_BE.tsx | 10 +-- components/date-picker/locale/fr_FR.tsx | 10 +-- components/date-picker/locale/it_IT.tsx | 10 +-- components/date-picker/locale/ja_JP.tsx | 10 +-- components/date-picker/locale/ko_KR.tsx | 10 +-- components/date-picker/locale/nl_BE.tsx | 10 +-- components/date-picker/locale/nl_NL.tsx | 10 +-- components/date-picker/locale/pl_PL.tsx | 10 +-- components/date-picker/locale/pt_BR.tsx | 10 +-- components/date-picker/locale/ru_RU.tsx | 10 +-- components/date-picker/locale/sk_SK.tsx | 10 +-- components/date-picker/locale/sv_SE.tsx | 10 +-- components/date-picker/locale/tr_TR.tsx | 10 +-- components/date-picker/locale/vi_VN.tsx | 10 +-- components/date-picker/locale/zh_CN.tsx | 10 +-- components/date-picker/locale/zh_TW.tsx | 10 +-- components/form/Form.tsx | 7 +- components/grid/col.tsx | 6 +- components/grid/row.tsx | 11 ++-- components/input/Input.tsx | 11 +++- components/modal/confirm.tsx | 6 +- components/modal/index.tsx | 26 ++++---- components/modal/locale.tsx | 15 +++-- components/notification/index.tsx | 8 ++- components/popover/index.tsx | 3 +- components/table/Table.tsx | 85 +++++++++++++++---------- components/table/createStore.tsx | 7 +- components/table/util.tsx | 12 ++-- components/tag/index.tsx | 6 +- components/time-picker/index.tsx | 6 +- components/transfer/item.tsx | 6 +- components/transfer/list.tsx | 5 +- components/upload/Upload.tsx | 12 ++-- package.json | 5 +- 49 files changed, 333 insertions(+), 217 deletions(-) diff --git a/components/_util/getLocale.tsx b/components/_util/getLocale.tsx index f0bb737500..4fe58bf2b9 100644 --- a/components/_util/getLocale.tsx +++ b/components/_util/getLocale.tsx @@ -1,5 +1,3 @@ -import assign from 'object-assign'; - export function getComponentLocale(props, context, componentName, getDefaultLocale) { let locale: any = {}; if (context && context.antLocale && context.antLocale[componentName]) { @@ -11,8 +9,14 @@ export function getComponentLocale(props, context, componentName, getDefaultLoca locale = defaultLocale.default || defaultLocale; } - const result = assign({}, locale, props.locale); - result.lang = assign({}, locale.lang, props.locale.lang); + const result = { + ...locale, + ...props.locale, + }; + result.lang = { + ...locale.lang, + ...props.locale.lang, + }; return result; } diff --git a/components/badge/ScrollNumber.tsx b/components/badge/ScrollNumber.tsx index b5a8eb5bc8..97752a5987 100644 --- a/components/badge/ScrollNumber.tsx +++ b/components/badge/ScrollNumber.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { createElement, Component } from 'react'; -import assign from 'object-assign'; import omit from 'omit.js'; +import classNames from 'classnames'; function getNumberArray(num) { return num ? @@ -119,24 +119,30 @@ export default class ScrollNumber extends Component { } render() { + const { prefixCls, className, style, component = 'sup' } = this.props; // fix https://fb.me/react-unknown-prop - const props = assign({}, omit(this.props, [ + const restProps = omit(this.props, [ 'count', 'onAnimated', 'component', 'prefixCls', - ]), { - className: `${this.props.prefixCls} ${this.props.className}`, - }); + ]); + const newProps = { + ...restProps, + className: classNames({ + [`${prefixCls}`]: !!prefixCls, + [`${className}`]: !!className, + }), + }; // allow specify the border // mock border-color by box-shadow for compatible with old usage: // - if (props.style && props.style.borderColor) { - props.style.boxShadow = `0 0 0 1px ${props.style.borderColor} inset`; + if (style && style.borderColor) { + newProps.style.boxShadow = `0 0 0 1px ${style.borderColor} inset`; } return createElement( - (this.props.component || 'sup') as any, - props, + component as any, + newProps, this.renderNumberElement(), ); } diff --git a/components/carousel/index.tsx b/components/carousel/index.tsx index a66bb091a8..d776b858b2 100644 --- a/components/carousel/index.tsx +++ b/components/carousel/index.tsx @@ -1,6 +1,5 @@ // matchMedia polyfill for // https://github.com/WickyNilliams/enquire.js/issues/82 -import assign from 'object-assign'; import debounce from 'lodash.debounce'; if (typeof window !== 'undefined') { @@ -108,7 +107,9 @@ export default class Carousel extends React.Component { } render() { - let props = assign({}, this.props); + let props = { + ...this.props, + }; if (props.effect === 'fade') { props.fade = true; diff --git a/components/date-picker/RangePicker.tsx b/components/date-picker/RangePicker.tsx index cc973f6d7b..317fff2fd8 100644 --- a/components/date-picker/RangePicker.tsx +++ b/components/date-picker/RangePicker.tsx @@ -1,10 +1,10 @@ +/* tslint:disable jsx-no-multiline-js */ import React from 'react'; import moment from 'moment'; import PropTypes from 'prop-types'; import RangeCalendar from 'rc-calendar/lib/RangeCalendar'; import RcDatePicker from 'rc-calendar/lib/Picker'; import classNames from 'classnames'; -import assign from 'object-assign'; import Icon from '../icon'; import { getLocaleCode } from '../_util/getLocale'; import warning from '../_util/warning'; @@ -249,7 +249,13 @@ export default class RangePicker extends React.Component { }; return ( - + + { static Item = FormItem; static create = function(options?: FormCreateOption): ComponentDecorator { - const formWrapper = createDOMForm(assign({ + const formWrapper = createDOMForm({ fieldNameProp: 'id', - }, options, { + ...options, fieldMetaProp: FIELD_META_PROP, - })); + }); /* eslint-disable react/prefer-es6-class */ return (Component) => formWrapper(createReactClass({ diff --git a/components/grid/col.tsx b/components/grid/col.tsx index 7f9a4cc854..73ef947721 100644 --- a/components/grid/col.tsx +++ b/components/grid/col.tsx @@ -1,7 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -import assign from 'object-assign'; const stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]); const objectOrNumber = PropTypes.oneOfType([PropTypes.object, PropTypes.number]); @@ -60,13 +59,14 @@ export default class Col extends React.Component { delete others[size]; - sizeClassObj = assign({}, sizeClassObj, { + sizeClassObj = { + ...sizeClassObj, [`${prefixCls}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined, [`${prefixCls}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0, [`${prefixCls}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0, [`${prefixCls}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0, [`${prefixCls}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0, - }); + }; }); const classes = classNames({ [`${prefixCls}-${span}`]: span !== undefined, diff --git a/components/grid/row.tsx b/components/grid/row.tsx index b0cc99492c..e27c8f0acc 100644 --- a/components/grid/row.tsx +++ b/components/grid/row.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { Children, cloneElement } from 'react'; import classNames from 'classnames'; -import assign from 'object-assign'; import PropTypes from 'prop-types'; export interface RowProps { @@ -37,20 +36,22 @@ export default class Row extends React.Component { [`${prefixCls}-${type}-${justify}`]: type && justify, [`${prefixCls}-${type}-${align}`]: type && align, }, className); - const rowStyle = (gutter as number) > 0 ? assign({}, { + const rowStyle = (gutter as number) > 0 ? { marginLeft: (gutter as number) / -2, marginRight: (gutter as number) / -2, - }, style) : style; + ...style, + } : style; const cols = Children.map(children, (col: React.ReactElement) => { if (!col) { return null; } if (col.props && (gutter as number) > 0) { return cloneElement(col, { - style: assign({}, { + style: { paddingLeft: (gutter as number) / 2, paddingRight: (gutter as number) / 2, - }, col.props.style), + ...col.props.style, + }, }); } return col; diff --git a/components/input/Input.tsx b/components/input/Input.tsx index b3e9b114bd..b051c51684 100644 --- a/components/input/Input.tsx +++ b/components/input/Input.tsx @@ -1,9 +1,9 @@ +/* tslint:disable jsx-no-multiline-js */ import React from 'react'; import { Component, cloneElement } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import calculateNodeHeight from './calculateNodeHeight'; -import assign from 'object-assign'; import omit from 'omit.js'; function fixControlledValue(value) { @@ -234,7 +234,9 @@ export default class Input extends Component { } renderInput() { - const props = assign({}, this.props); + const props = { + ...this.props, + }; // Fix https://fb.me/react-unknown-prop const otherProps = omit(this.props, [ 'prefixCls', @@ -268,7 +270,10 @@ export default class Input extends Component { return (