React-使用hook的组件外层逻辑不要太复杂

    一切都要从函数组件说起。在react没出hook之前,function没有内部状态state。自从出了hook之后,允许函数组件使用内部状态,可以自行刷新,并多了其它一些操作。

   函数组件的性质,说到底,函数组件只是个函数,没有像class那样做一些控制渲染的浅比较。它只负责返回element。所以用来做木偶(受控)组件比较合适。

    我们用useState来说明,为什么函数组件的外层逻辑不要太复杂?

demo

    我们在a定义之前,看下输出,在之后看下输出,用useState来控制刷新,每次点击按钮会发现:

结果

    每次的a都是被重新定义的。这说明函数组件在刷新的时候,每次都会自执行一遍,将里边的变量和函数统统定义一遍。如果在定义a的地方不只是定义a,而是一套逻辑,那,每次render的时候都会将逻辑走一遍,很消耗性能。

    之前在看class的时候,尤其是自定义class,编译后会将constructor里的内容直接放在类函数里,是一种模拟的手段。但在执行的时候并不会重新定义。这里不要混淆,毕竟类被new 了之后,除了静态的变量和方法,其它都被实例化了,只有重新new的时候,才会再走一遍。但函数组件的刷新,每次都会像new一样,重新走一遍。

    

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我真的不想继续活下去了,我不恨这个世界,只是讨厌自己。 由于工作的关系,我每天都能接触到很多的抑郁症患者,这是他们...
    谢老四阅读 4,605评论 0 5
  • 今天早上考完英语听力,差不多一个小时就都做完了 大家都提前交卷,我也一样,和猛哥一起出来,去了课题组里面一坐,带老...
    陪你陪猫阅读 1,345评论 0 0
  • MySQL 数据库 存储数据的方式. 靠大脑. 写在纸上. 写在计算机内存中. 写在磁盘文件中 数据库能做什么?存...
    卢卡Lucar阅读 1,930评论 0 0
  • 第一次做白菜炖粉条,获得了不小的评价,有点高兴
    Yes俺必胜阅读 643评论 0 0