一个很有意思的hook库:react_第1页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一个很有意思的hook库:react前言 千呼万唤始出来,react hooks最终在react 16.8版本中发布稳定版了。最近逛github发觉了一个很故意思的库:react-hanger。 复习react hooks 假如对hooks还不怎么了解的学生,建议去看一下官方文档:introducing hooks. 什么是 hooks? 我们都知道,在hooks之前,开发react组件主要是class组件和function组件。function组件没有state,所以也叫sfc(stateless functional component),容易的将props映射成view;class组件有

2、state,能够处理越发复杂的规律。但是基于class的组建并不是完善的,总结起来就像dan说的那样,有三个主要的问题: 代码重用:在hooks出来之前,频繁的代码重用方式是hocs和render props,这两种方式带来的问题是:你需要解构自己的组件,十分的粗笨,同时会带来很深的组件嵌套 复杂的组件规律:在class组件中,有许多的lifecycle 函数,你需要在各个函数的里面去做对应的事情。这种方式带来的痛点是:规律簇拥在各处,开发者去维护这些代码会簇拥自己的精力,理解代码规律也很吃力 class组件的困窘:对于初学者来说,需要理解class组件里面的this是比较吃力的(这个理由有点

3、牵强——),同时,基于class的组件难以优化(举个不恰当的例子,看一下babel转移出来的class代码量增长了多少) 为了解决上面的这三个问题,react hooks提案登场了,它有以下几个特点: 无痛接入,不破坏现有的项目结构 彻低向后兼容,不包含任何不兼容breaking changes 现在就能用法 hooks 允许你在不编写 class 的状况下用法状态(state)和其他 react 特性。 你还可以构建自己的 hooks, 跨组件分享可重用的有状态规律。 现在react中内置的hooks有: basic hooks usestate useeffect

4、usecontext additional hooks usereducer usecallback usememo useref useimperativehandle uselayouteffect usedebugvalue 固然了,授之以鱼不如授之以渔,react官方也提供了教你如何封装自己hook的文档building your own hooks,有爱好的小伙伴可以去阅读一下。 react-hanger初窥 大致的看了下react-hanger的源码之后发觉,这个库其实是对react hooks api的适用性封装。裸露一些更常用的hooks节约大家造轮子的工作量。 react的核

5、心开发者dan看到这个库也做了评价: 一个对hooks的隐喻。你可以将你的state挂起在你的function component上,等你回归的时候,它就挂在那。 本文写作时,react-hanger的usage里提供了6个api,从名字里就可以看出这些hook都是做什么的(hooks都以"use"开始,这是一种商定), import useinput, useboolean, usenumber, usearray, useonmount, useonunmount from "react-hanger" 用法起来也很容易,比如usenumber const app = () = const showcounter = useboolean(true); const counter = usenumber(0); return ( increase showcounter.value && counter.value decrease ); ; 初步印象:大致与原始的basic hooks有点不同的是,usestate返回一个数组,分离是值与操作,而react-hanger提供的api貌似是将值和一些操作封装到一个对象中,比如counter就是一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论