我刚刚创建了一个react项目,感觉创建组件的方式不一样了,以前都是class类,现在都是返回函数,不知道有其他区别没有
来源:2-5 React 中最基础的JSX语法
jerry_123_
2021-06-18
1回答
-
雪原小狼狼
2021-06-21
自从React 16.8推出Hooks的编程方式之后,大部分开发者的编程方式也都跟着有一些转变。如果你已经能熟练运用class组件写项目的话,再去接触函数+Hooks编程可能还会稍微不习惯,但用久了之后会发现,确实挺香的。再加上我之前的公司以及现在在蚂蚁内部的一些React编程规范,Hooks方式也是首选的了。Ant Design v4+等框架也几乎都向这边迁移了,同样的一些生态比如react-redux也支持Hooks的用法。
类组件和函数+Hooks的一些明显的区别就比如:Hooks方式编程不能使用类组件的生命周期、状态不再使用类组件提供的setState方法而是使用useState的Hooks、更轻量等等。刚入Hooks也可能会出现不少的坑,比如:副作用的依赖错误、在非Hooks的自定义方法或条件判断中错误地使用了Hooks等。(实际上还有更多)
而且并不是掌握了函数+Hooks编程的方式就不用掌握class了,一些老项目没有迁移的可能依然需要用到类组件,而且很多原理性的东西以及面试相关都还是要涉及到的。只不过团队项目在尽可能地迁移到新特性,一些比较庞大的、耦合比较严重的组件迁移起来还是有点耗费人力。
回到问题上来,同学你用的create-react-app(CRA)版本可能比较新,所以默认都是用函数组件+Hooks创建的了,如果需要跟着课程来走的话,可以暂时先尝试一下低版本的CRA,我看了下2.1.8的版本生成的模版是类组件的(抱歉我没有测...如果有问题可以再继续讨论哈):
npx create-react-app@2.1.8 my-app
没有npx(或者执行失败)的话可能要试试直接全局安装CRA之后再生成项目(不用了记得卸掉哦):
npm install -g create-react-app@2.1.8 create-react-app my-app
啰嗦了很多,大部分靠着自己的一些经验来讲的,希望能帮到同学,加油哦~
有错误欢迎指正批评!
312021-06-21