React在其最新建议中介绍了Hooks。效果挂钩具有如下功能和数组:
useEffect(() => {
document.title = `${unRead} notifications`
}, [unRead])
反应为intentional using an arrow function。这意味着每次调用效果挂钩时都会创建一个新函数。
考虑到组件可以具有多个效果挂钩的事实,这是否会对性能产生影响?
答案 0 :(得分:2)
这意味着每次调用效果挂钩时都会创建一个新函数。
因此创建了一个新数组[unRead]
。数组和函数都不是问题。与其他对象类似,在现代JS引擎中创建函数的速度非常快。新创建的功能对性能的影响可以忽略不计。
根据引擎的不同,如果重复使用某个功能,可能会提高性能:
// outside a component
const effect = () => {...};
...
// inside a component
useEffect(effect);
vs
useEffect(() => {...});
但是,由于效果通常依赖于包围范围(例如useState
状态),因此效果功能的重用可能是不切实际的。
关于 arrow 函数,尽管箭头在某些引擎(例如较旧的Firefox版本)中可能会出现性能问题,但是箭头和常规函数之间不会有性能差异。
考虑到组件可以具有多个效果挂钩的事实,这是否会对性能产生影响?
如果经常调用组件函数足以引起性能问题,那么这就是实际的问题。