首页 >

react中hooks解决了什么问题

web前端|前端问答react中hooks解决了什么问题
React
web前端-前端问答
娜娜软件源码,ubuntu清楚内存碎片,让tomcat开机自启动,无锡爬虫店铺,php删除图片代码,开州区服务型seo推广包含什么lzw
react中hooks解决了什么问题
库存管理源码,vscode colab,ubuntu 主菜单,tomcat数据,sqlite知乎,上海服务器公司,支付宝需要插件吗,前端框架模板layui,爬虫 英语,php编辑器下载,太极seo,网站后台无法修改,驾照考试系统html网页模板,医疗网站女性专题网页设计模板,关于我们页面模板,基于web的旅游管理系统,网络聊天程序lzw
1、在组件之间复用状态逻辑很难
江湖商圈o2o源码下载,vscode php js,ubuntu 换用户登录,重启 tomcat,外部导入sqlite,tcp.exe win2003服务器,织梦视频缩略图插件,前端没有框架Frame,c cef 爬虫,php绑定,黑帽seo高手,css3特效大全网站,天猫商城网页模板,防伪查询模板,简洁的手机导航页面模板下载,文件管理系统 asp,matlab图像压缩程序lzw
React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)解决此类问题可以使用 render props 和 高阶组件。但是这类方案需要重新组织组件结构,这可能会很麻烦,并且会使代码难以理解。由 providers,consumers,高阶组件,render props 等其他抽象层组成的组件会形成“嵌套地狱”。尽管可以在 DevTools 过滤掉它们,但这说明了一个更深层次的问题:React 需要为共享状态逻辑提供更好的原生途径。

可以使用 Hook 从组件中提取状态逻辑,使得这些逻辑可以单独测试并复用。Hook 使我们在无需修改组件结构的情况下复用状态逻辑。 这使得在组件间或社区内共享 Hook 变得更便捷。

2、复杂组件变得难以理解

在组件中,每个生命周期常常包含一些不相关的逻辑。例如,组件常常在 componentDidMount 和 componentDidUpdate 中获取数据。但是,同一个 componentDidMount 中可能也包含很多其它的逻辑,如设置事件监听,而之后需在 componentWillUnmount 中清除。相互关联且需要对照修改的代码被进行了拆分,而完全不相关的代码却在同一个方法中组合在一起。如此很容易产生 bug,并且导致逻辑不一致。

在多数情况下,不可能将组件拆分为更小的粒度,因为状态逻辑无处不在。这也给测试带来了一定挑战。同时,这也是很多人将 React 与状态管理库结合使用的原因之一。但是,这往往会引入了很多抽象概念,需要你在不同的文件之间来回切换,使得复用变得更加困难。

为了解决这个问题,Hook 将组件中相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件的内部状态,使其更加可预测。

3、难以理解的 class

除了代码复用和代码管理会遇到困难外,class 是学习 React 的一大屏障。我们必须去理解 JavaScript 中 this 的工作方式,这与其他语言存在巨大差异。还不能忘记绑定事件处理器。没有稳定的语法提案,这些代码非常冗余。大家可以很好地理解 props,state 和自顶向下的数据流,但对 class 却一筹莫展。即便在有经验的 React 开发者之间,对于函数组件与 class 组件的差异也存在分歧,甚至还要区分两种组件的使用场景。

为了解决这些问题,Hook 使你在非 class 的情况下可以使用更多的 React 特性。 从概念上讲,React 组件一直更像是函数。而 Hook 则拥抱了函数,同时也没有牺牲 React 的精神原则。Hook 提供了问题的解决方案,无需学习复杂的函数式或响应式编程技术

《react视频教学》


  • 暂无相关文章
  • Posted in 未分类