React函数式组件 ,如果是不需要显示在页面的状态,是不是定义在函数外面比较好?

发布于 2022-09-12 04:47:35 字数 283 浏览 12 评论 0

比如test并不需要显示在页面 但是在组件App中会用到,是不是定义在App组件外部比较好,这样可以减少App组件渲染次数,而count是状态所以通过useState定义在函数内部?

let test = 1;
// App组件
const App = () => {
    const [count, setCount] = useState(0)
    return (
        <span>{count}</span>
    )
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

愁杀 2022-09-19 04:47:36

其实变量是否影响性能,不是看它的值或者它所引用的值是否会被渲染到页面里,因为有很多数据都需要渲染,多来点数据,影响不大。
能影响性能的参数会有如下特征中的一个或多个:

  1. 取值频繁变化,进而频繁触发渲染;
  2. 被很多地方引用,每次变化会引起很大的变动;
  3. 它的变化会引发一系列复杂的运算;
  4. 数据量很大,并且都需要实时运算(这条特征和 3 有点交集,但是优化方式有所不同)。

不管是上面的哪一种,都有两个共性:1. 会影响渲染; 2. 会变化。实际上。任何具备这两个共性的参数,不管放到哪里,都有影响性能的潜力;反之,只要不具备其中任何一条,都 可以 (而不是一定)不放进 state


那么,什么样的数据适合独立到 state 之外来维护呢?两种情况:

  1. 配置性的参数,比如交给运营人员维护的官网主题色,它影响渲染,但是在组件的整个生命周期里基本不会变化,可视为不变;
  2. 常量、魔数等,比如混淆用户口令时用的 salt ,它的取值不会影响渲染。
ら栖息 2022-09-19 04:47:36

可以放到函数外外部,或者使用useRef

四叶草在未来唯美盛开 2022-09-19 04:47:36

组件可能在同一页面中渲染多个,如果能确保用全局共享方式时可以很好管理内存,也是可以的,但是大多数情况下管理不好,嗖嗖就内存泄漏了

寂寞美少年 2022-09-19 04:47:36

换个角度考虑,实际向上追溯作用域链也是有性能浪费的,所以并不一定就比写在里面会更好。简单的变量,也没其他什么复用,就放里面吧。
毕竟大头是要控制的是渲染次数,少一次渲染就抵得过这些消耗了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文