diff --git a/src/components/SavedItemPane.jsx b/src/components/SavedItemPane.jsx index 260906a..2bae8e2 100644 --- a/src/components/SavedItemPane.jsx +++ b/src/components/SavedItemPane.jsx @@ -10,21 +10,25 @@ export default class SavedItemPane extends Component { constructor(props) { super(props); this.items = []; - this.state = { - filteredItems: [] + } + + static getDerivedStateFromProps({ items = {} }, state) { + const newItems = Object.values(items); + newItems.sort(function(a, b) { + return b.updatedOn - a.updatedOn; + }); + return { + items: newItems, + filteredItems: newItems }; } - componentWillUpdate(nextProps) { - if (this.props.items !== nextProps.items) { - this.items = Object.values(nextProps.items); - this.items.sort(function(a, b) { - return b.updatedOn - a.updatedOn; - }); - this.setState({ - filteredItems: this.items - }); - } + shouldComponentUpdate(nextProps) { + return ( + nextProps.items !== this.props.items || + nextProps.isOpen !== this.props.isOpen + ); } + componentDidUpdate(prevProps) { if (this.props.isOpen && !prevProps.isOpen) { window.searchInput.value = ''; @@ -137,11 +141,14 @@ export default class SavedItemPane extends Component { trackEvent('ui', 'searchInputType'); } - render() { + render( + { isOpen, exportBtnClickHandler }, + { filteredItems = [], items = [] } + ) { return (