react里面的function组件与class组件
假设场景是有一个父组件,包裹一个function子组件和class子组件
class组件在render过后,定义好的function,可以通过this.func进行调用,并且不会重新再创建
function组件会重新执行一遍,并且重新进行创建需要的function
对比起起来是否function组件在频繁刷新的地方,消耗的性能比class高?
react里面的function组件与class组件
假设场景是有一个父组件,包裹一个function子组件和class子组件
class组件在render过后,定义好的function,可以通过this.func进行调用,并且不会重新再创建
function组件会重新执行一遍,并且重新进行创建需要的function
对比起起来是否function组件在频繁刷新的地方,消耗的性能比class高?
如果组件内创建的function是callback function,不会有太大区别
如果是传给子组件的render function,可以用useCallback优化
性能上其实不会有太大区别,官方都不在意这些性能,现在官方文档示例里全是funciton组件
而且function可以对内部定义的函数名变量名压缩,Class没法对方法名field名压缩
使用useMemo
const { useMemo } from "react"
...
const { fn } = useMemo(() => {
const fn = () => {}
return { fn }
})
...
6 回答2.4k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
React官方文档也说了:
简单测试一下:
执行结果
毫无疑问静态函数是更快的一点的,但是差距非常小,实际应用场景几乎是可以忽略不计的。文档也提到Class本身也有一些额外的开销,而且很难被优化,所以基本可以抵销函数创建的开销了
那么闭包的复杂度也会影响创建的速度吗?还是跑下看下:
运行结果:
经过测试闭包的复杂度基本不会影响创建的效率。
所以可以放心使用Hook,只不过我们还可以做一些优化,比如: