commit: e843f62f479d9b8b2d177e587c3e10b5e3945f68
parent: ec487166db4d9d532e6090c76b65c797780fa841
Author: Nolan Lawson <nolan@nolanlawson.com>
Date: Fri, 27 Oct 2017 10:08:07 -0700
Avoid unnecessary Motion components in icon_button.js (#5544)
Diffstat:
1 file changed, 19 insertions(+), 0 deletions(-)
diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js
@@ -72,6 +72,25 @@ export default class IconButton extends React.PureComponent {
overlayed: overlay,
});
+ if (!animate) {
+ // Perf optimization: avoid unnecessary <Motion> components unless
+ // we actually need to animate.
+ return (
+ <button
+ aria-label={title}
+ aria-pressed={pressed}
+ aria-expanded={expanded}
+ title={title}
+ className={classes}
+ onClick={this.handleClick}
+ style={style}
+ tabIndex={tabIndex}
+ >
+ <i className={`fa fa-fw fa-${icon}`} aria-hidden='true' />
+ </button>
+ );
+ }
+
return (
<Motion defaultStyle={{ rotate: active ? -360 : 0 }} style={{ rotate: animate ? spring(active ? -360 : 0, { stiffness: 120, damping: 7 }) : 0 }}>
{({ rotate }) =>