LoDash有精彩的method // getting twitter user profile details
$twt_id = $data->id; //twitter user id
$twt_email = $data->email; //twitter user email
。使用是否是个好主意:
_.isEqual
我的应用中的所有组件?如果不是,为什么?
答案 0 :(得分:2)
使用shouldComponentUpdate
的唯一原因是,当您同时使用非常慢的render
方法并且非常频繁地设置“{1}}新的'实际上不会改变渲染结果的状态或道具。
对于大多数应用来说,情况并非如此。所以一般来说没有,你就是在浪费时间
答案 1 :(得分:2)
最有可能,没有。尽管组件可能正在重新渲染,但这并不一定意味着将对DOM进行更新。 React在幕后进行了一些比较,因此仅在DOM实际需要更改时才更新DOM(有关此here的更多信息)。
此外,LoDash的isEqual
方法进行了深层比较,这意味着它会遍历对象或数组(或给出的对象),并检查每个子对象和每个子对象的属性该元素的子元素(依此类推)到另一个值的子元素。对于小物体,这不会花费很长时间,但是当物体变大时,这可能会非常耗费时间。
即使您通过isEqual
方法可以快速进行比较,也可能有一种更有效的处理方法。通常,组件的渲染方法将仅花费几毫秒,并且如上所述,仅当实际有所不同时,DOM才会更新。如果您使用异常昂贵的渲染方法,则可能需要使用Pure Component。纯组件会进行较浅的道具比较,而不会递归到子对象的每个对象中。这样,如果道具 look 相同,则可以跳过渲染功能。请注意,如果道具中有嵌套属性,则纯组件将不会捕获它们,并且组件也不会重新渲染。
通常,如果要延迟渲染直到道具包含某些值(请考虑shouldComponentUpdate
),通常只想使用this.props.someValue && this.props.someOtherValue
,这在从服务器获取数据并且想等到拥有所有组件来渲染组件。另一个可能要使用shouldComponentUpdate
的时间是在呈现项目列表时。如果其中一个子代更改并且整个列表需要重新渲染,则可以通过检查渲染所需的道具来模拟纯组件,否则可以跳过渲染。还有 个其他用例,但它们通常是唯一的,您可能会知道何时应该使用shouldComponentUpdate
。
最后,使用shouldComponentUpdate
通常是性能优化。如果您的React应用程序没有出现性能问题,则可能不需要使用它。