title: React props comparison: "_.isEqual" versus "==="
body: <p>My issue is that lodash's deep comparison of equality and ==='s strict equality return different values when comparing fields of nextProps and self.props in the componentWillReceiveProps lifecycle method. </p>
  
  <ol>
  <li>Does this mean that the values of these properties must be of different types? I'm assuming _.isEqual does do type conversion to compare equality since === does not.</li>
  <li>Is it recommended to use _.isEqual when doing equality checking between fields of nextProps and self.props?</li>
  </ol>
  
  <p>Here's my specific example - </p>
  
  <pre><code>componentWillReceiveProps(nextProps){
    (nextProps.obj === self.props.obj);        // false
     _.isEqual(nextProps.obj, self.props.obj); // true
  
     typeof(nextProps.obj);  // object
     typeof(self.props.obj); // object
  
     nextProps.obj;   // { k1: "v1", k2: "v2", k3: "v3" }
     self.props.obj;  // { k1: "v1", k2: "v2", k3: "v3" }
  }
  </code></pre>
  
  <p>Does anyone know what might be going on?</p>