title: How to render React components only once on startup?
body: <p>I've been reading docs about performance but I can't find the answer to my question...</p>
  
  <p>I have a bunch of buttons on my application that will render based on some properties but not state, parent components will never change their properties. Then I have this <code>onKeyDown</code> event handler that will listen for some keys and update another component.</p>
  
  <p>My problem is that when pressing keys and updating this one component, all the other buttons will render too (observed through React dev tools for Chrome). I haven't implemented <code>shouldComponentUpdate(nextProps, nextState)</code> on my buttons, but shouldn't React have this behavior by default? I mean, compare <code>this.props</code> with <code>nextProps</code> and if they are exactly the same, do not call <code>render()</code>?</p>
  
  <p>Am I supposed to do this myself for every component that should only render once on application startup?</p>
  
  <p><strong>EDIT:</strong> <a href="https://facebook.github.io/react/docs/react-api.html#react.purecomponent" rel="noreferrer"><code>PureComponent</code></a> seems solve the problem... But instead of creating a new question, I'm updating this one with a related question:</p>
  
  <p><strong>Why wouldn't the documentation recommend to have all components based on PureComponent by default?</strong> What are the arguments against using <code>PureComponent</code> by default instead of the typical <code>Component</code>?</p>