From 5a9679fa40ebbbde3425b4cf4f073e0d6c262e50 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Mon, 26 Feb 2018 15:27:04 -0500
Subject: [PATCH] Don't use bind in mapStateToProps

---
 src/containers/load-button.jsx | 13 ++++++-------
 src/containers/save-button.jsx | 14 ++++++--------
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/containers/load-button.jsx b/src/containers/load-button.jsx
index 4d7ca30b0..ad6ba9d4e 100644
--- a/src/containers/load-button.jsx
+++ b/src/containers/load-button.jsx
@@ -14,12 +14,9 @@ class LoadButton extends React.Component {
             'handleClick'
         ]);
     }
-    shouldComponentUpdate () {
-        return false;
-    }
     handleChange (e) {
         const reader = new FileReader();
-        reader.onload = () => this.props.loadProject(reader.result);
+        reader.onload = () => this.props.vm.fromJSON(reader.result);
         reader.readAsText(e.target.files[0]);
     }
     handleClick () {
@@ -30,7 +27,7 @@ class LoadButton extends React.Component {
     }
     render () {
         const {
-            loadProject, // eslint-disable-line no-unused-vars
+            vm, // eslint-disable-line no-unused-vars
             ...props
         } = this.props;
         return (
@@ -45,11 +42,13 @@ class LoadButton extends React.Component {
 }
 
 LoadButton.propTypes = {
-    loadProject: PropTypes.func.isRequired
+    vm: PropTypes.shape({
+        fromJSON: PropTypes.func
+    })
 };
 
 const mapStateToProps = state => ({
-    loadProject: state.vm.fromJSON.bind(state.vm)
+    vm: state.vm
 });
 
 export default connect(
diff --git a/src/containers/save-button.jsx b/src/containers/save-button.jsx
index 5516ba2c7..8e130fbf5 100644
--- a/src/containers/save-button.jsx
+++ b/src/containers/save-button.jsx
@@ -14,11 +14,8 @@ class SaveButton extends React.Component {
             'handleClick'
         ]);
     }
-    shouldComponentUpdate () {
-        return false;
-    }
     handleClick () {
-        const json = this.props.saveProjectSb3();
+        const json = this.props.vm.saveProjectSb3();
 
         // Download project data into a file - create link element,
         // simulate click on it, and then remove it.
@@ -39,7 +36,7 @@ class SaveButton extends React.Component {
     }
     render () {
         const {
-            saveProjectSb3, // eslint-disable-line no-unused-vars
+            vm, // eslint-disable-line no-unused-vars
             ...props
         } = this.props;
         return (
@@ -60,11 +57,12 @@ class SaveButton extends React.Component {
 }
 
 SaveButton.propTypes = {
-    saveProjectSb3: PropTypes.func.isRequired
-};
+    vm: PropTypes.shape({
+        saveProjectSb3: PropTypes.func
+    })};
 
 const mapStateToProps = state => ({
-    saveProjectSb3: state.vm.saveProjectSb3.bind(state.vm)
+    vm: state.vm
 });
 
 export default connect(
-- 
GitLab