From 9d37f9bf999718fa73a7eb340ea0aa4a54d3ee18 Mon Sep 17 00:00:00 2001 From: raboid Date: Wed, 9 Jan 2019 18:15:48 -0500 Subject: [PATCH] use HOC for popout state, remove react-addons-shallow-compare --- components/BackgroundSelect.js | 37 +++++++++------------------------- components/ExportMenu.js | 21 ++++--------------- components/Popout.js | 32 ++++++++++++++++++++++++----- components/Settings.js | 24 +++++----------------- package.json | 1 - yarn.lock | 10 +-------- 6 files changed, 46 insertions(+), 79 deletions(-) diff --git a/components/BackgroundSelect.js b/components/BackgroundSelect.js index e39634a..fbbb700 100644 --- a/components/BackgroundSelect.js +++ b/components/BackgroundSelect.js @@ -1,33 +1,19 @@ import React from 'react' -import shallowCompare from 'react-addons-shallow-compare' import ImagePicker from './ImagePicker' import ColorPicker from './ColorPicker' -import Popout from './Popout' +import Popout, { managePopout } from './Popout' import { COLORS, DEFAULT_BG_COLOR } from '../lib/constants' import { validateColor } from '../lib/colors' -import { toggle, capitalize, stringifyRGBA } from '../lib/util' +import { capitalize, stringifyRGBA } from '../lib/util' -class BackgroundSelect extends React.Component { - state = { isVisible: false, mounted: false } +class BackgroundSelect extends React.PureComponent { + state = { mounted: false } componentDidMount() { this.setState({ mounted: true }) } - shouldComponentUpdate(prevProps, prevState) { - return [ - prevState.isVisible !== this.state.isVisible, - prevProps.color !== this.props.color, - prevState.isVisible && shallowCompare(this, prevProps, prevState) - ].some(Boolean) - } - - toggle = e => { - e.stopPropagation() - this.setState(toggle('isVisible')) - } - selectTab = name => { if (this.props.mode !== name) { this.props.onChange({ backgroundMode: name }) @@ -37,8 +23,8 @@ class BackgroundSelect extends React.Component { handlePickColor = ({ rgb }) => this.props.onChange({ backgroundColor: stringifyRGBA(rgb) }) render() { - const { color, mode, image, onChange, aspectRatio } = this.props - const { isVisible, mounted } = this.state + const { color, mode, image, onChange, aspectRatio, isVisible, toggleVisibility } = this.props + const { mounted } = this.state let background = typeof color === 'string' @@ -58,17 +44,12 @@ class BackgroundSelect extends React.Component { return (
-
+
-