Preventing Unintentional Renders

The code below will re-render all consumers every time the Provider re-renders because a new object is always created for 'value':


RESETRUNFULL
class App extends React.Component {
   render() {
      return (<MyContext.Provider value={{something: 'something'}}>
                    <Toolbar />
                 </MyContext.Provider>);
   }}

To get around this, lift the value into the parent's state:


RESETRUNFULL
class App extends React.Component {
   constructor(props) {
      super(props);
        this.state = {
        value: {something: 'something'},
      };
   }
   render() {
      return (<MyContext.Provider value={this.state.value}>
                    <Toolbar />
                 </MyContext.Provider>);
   }}