refactor: improve Form re-render performance

pull/2007/head
Benjy Cui 9 years ago
parent c1ac6917ee
commit 6c6496fae4

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import PureRenderMixin from 'react-addons-pure-render-mixin';
export default class Form extends React.Component { export default class Form extends React.Component {
static defaultProps = { static defaultProps = {
@ -22,6 +23,10 @@ export default class Form extends React.Component {
form: React.PropTypes.object, form: React.PropTypes.object,
} }
shouldComponentUpdate(...args) {
return PureRenderMixin.shouldComponentUpdate.apply(this, args);
}
getChildContext() { getChildContext() {
return { return {
form: this.props.form, form: this.props.form,

@ -1,9 +1,6 @@
import React from 'react'; import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import PureRenderMixin from 'react-addons-pure-render-mixin';
function prefixClsFn(prefixCls, ...args) {
return args.map((s) => `${prefixCls}-${s}`).join(' ');
}
export default class FormItem extends React.Component { export default class FormItem extends React.Component {
static defaultProps = { static defaultProps = {
@ -28,6 +25,10 @@ export default class FormItem extends React.Component {
form: React.PropTypes.object, form: React.PropTypes.object,
} }
shouldComponentUpdate(...args) {
return PureRenderMixin.shouldComponentUpdate.apply(this, args);
}
getLayoutClass(colDef) { getLayoutClass(colDef) {
if (!colDef) { if (!colDef) {
return ''; return '';
@ -70,11 +71,10 @@ export default class FormItem extends React.Component {
} }
renderHelp() { renderHelp() {
const props = this.props; const prefixCls = this.props.prefixCls;
const prefixCls = props.prefixCls;
const help = this.getHelpMsg(); const help = this.getHelpMsg();
return help ? ( return help ? (
<div className={prefixClsFn(prefixCls, 'explain')} key="help"> <div className={`${prefixCls}-explain`} key="help">
{help} {help}
</div> </div>
) : null; ) : null;
@ -83,7 +83,7 @@ export default class FormItem extends React.Component {
renderExtra() { renderExtra() {
const { prefixCls, extra } = this.props; const { prefixCls, extra } = this.props;
return extra ? ( return extra ? (
<span className={prefixClsFn(prefixCls, 'extra')}>{extra}</span> <span className={`${prefixCls}-extra`}>{extra}</span>
) : null; ) : null;
} }

Loading…
Cancel
Save