在React Effect Hook中使用箭头功能是否存在任何性能问题?

时间:2018-11-30 16:17:49

标签: reactjs react-hooks

React在其最新建议中介绍了Hooks。效果挂钩具有如下功能和数组:

useEffect(() => {
    document.title = `${unRead} notifications`
}, [unRead])

反应为intentional using an arrow function。这意味着每次调用效果挂钩时都会创建一个新函数。

考虑到组件可以具有多个效果挂钩的事实,这是否会对性能产生影响?

enter image description here

1 个答案:

答案 0 :(得分:2)

  

这意味着每次调用效果挂钩时都会创建一个新函数。

因此创建了一个新数组[unRead]。数组和函数都不是问题。与其他对象类似,在现代JS引擎中创建函数的速度非常快。新创建的功能对性能的影响可以忽略不计。

根据引擎的不同,如果重复使用某个功能,可能会提高性能:

// outside a component
const effect = () => {...};

...
// inside a component
useEffect(effect);

vs

useEffect(() => {...});

但是,由于效果通常依赖于包围范围(例如useState状态),因此效果功能的重用可能是不切实际的。

关于 arrow 函数,尽管箭头在某些引擎(例如较旧的Firefox版本)中可能会出现性能问题,但是箭头和常规函数之间不会有性能差异。

  

考虑到组件可以具有多个效果挂钩的事实,这是否会对性能产生影响?

如果经常调用组件函数足以引起性能问题,那么这就是实际的问题。