From ca5fd0b23d5616ac523e7825bfe526db47fd4787 Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Mon, 21 Nov 2016 14:14:25 +0100 Subject: [PATCH 1/4] React Perf in dev mode // Smarter background component #3240 --- js/package.json | 1 + js/src/index.js | 6 +++ .../ui/ParityBackground/parityBackground.js | 43 ++++++++++--------- .../views/Application/Container/container.js | 7 ++- js/src/views/ParityBar/parityBar.js | 11 ++++- .../views/Settings/Background/background.js | 5 ++- 6 files changed, 49 insertions(+), 24 deletions(-) diff --git a/js/package.json b/js/package.json index 7f4157cad..f8705f1a1 100644 --- a/js/package.json +++ b/js/package.json @@ -102,6 +102,7 @@ "postcss-nested": "^1.0.0", "postcss-simple-vars": "^3.0.0", "raw-loader": "^0.5.1", + "react-addons-perf": "~15.3.2", "react-addons-test-utils": "~15.3.2", "react-copy-to-clipboard": "^4.2.3", "react-dom": "~15.3.2", diff --git a/js/src/index.js b/js/src/index.js index fda785842..0e0433c1e 100644 --- a/js/src/index.js +++ b/js/src/index.js @@ -46,6 +46,12 @@ import './index.html'; injectTapEventPlugin(); +if (process.env.NODE_ENV === 'development') { + // Expose the React Performance Tools on the`window` object + const Perf = require('react-addons-perf'); + window.Perf = Perf; +} + const AUTH_HASH = '#/auth?'; const parityUrl = process.env.PARITY_URL || ( diff --git a/js/src/ui/ParityBackground/parityBackground.js b/js/src/ui/ParityBackground/parityBackground.js index 0916d3a85..5198195c0 100644 --- a/js/src/ui/ParityBackground/parityBackground.js +++ b/js/src/ui/ParityBackground/parityBackground.js @@ -16,26 +16,17 @@ import React, { Component, PropTypes } from 'react'; import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; class ParityBackground extends Component { - static contextTypes = { - muiTheme: PropTypes.object.isRequired - } - static propTypes = { + style: PropTypes.object.isRequired, children: PropTypes.node, className: PropTypes.string, - gradient: PropTypes.string, - seed: PropTypes.any, - settings: PropTypes.object.isRequired, onClick: PropTypes.func - } + }; render () { - const { muiTheme } = this.context; - const { children, className, gradient, seed, settings, onClick } = this.props; - const style = muiTheme.parity.getBackgroundStyle(gradient, seed || settings.backgroundSeed); + const { children, className, style, onClick } = this.props; return (
{ + const { backgroundSeed } = state.settings; + const { seed } = props; + + const newSeed = seed || backgroundSeed; + + if (newSeed === _seed) { + return _props; + } + + _seed = newSeed; + _props = { style: muiTheme.parity.getBackgroundStyle(gradient, newSeed) }; + + return _props; + }; } export default connect( - mapStateToProps, - mapDispatchToProps + mapStateToProps )(ParityBackground); diff --git a/js/src/views/Application/Container/container.js b/js/src/views/Application/Container/container.js index a1b9124c7..d3908f570 100644 --- a/js/src/views/Application/Container/container.js +++ b/js/src/views/Application/Container/container.js @@ -22,6 +22,10 @@ import { Errors, ParityBackground, Tooltips } from '../../../ui'; import styles from '../application.css'; export default class Container extends Component { + static contextTypes = { + muiTheme: PropTypes.object.isRequired + }; + static propTypes = { children: PropTypes.node.isRequired, showFirstRun: PropTypes.bool, @@ -30,9 +34,10 @@ export default class Container extends Component { render () { const { children, showFirstRun, onCloseFirstRun } = this.props; + const { muiTheme } = this.context; return ( - + diff --git a/js/src/views/ParityBar/parityBar.js b/js/src/views/ParityBar/parityBar.js index 0f3380ca0..40fe659ad 100644 --- a/js/src/views/ParityBar/parityBar.js +++ b/js/src/views/ParityBar/parityBar.js @@ -28,6 +28,10 @@ import imagesEthcoreBlock from '../../../assets/images/parity-logo-white-no-text import styles from './parityBar.css'; class ParityBar extends Component { + static contextTypes = { + muiTheme: PropTypes.object.isRequired + }; + static propTypes = { pending: PropTypes.array, dapp: PropTypes.bool @@ -62,6 +66,7 @@ class ParityBar extends Component { renderBar () { const { dapp } = this.props; + const { muiTheme } = this.context; if (!dapp) { return null; @@ -75,7 +80,7 @@ class ParityBar extends Component { return (
- +
); }