React 之Hook

image-20201106091732369

Hook是React16.8的新增特性

useState

对应的是state

[初始值,对应的操作]

  • 先引入

    image-20201106091820954

image-20201105165408720

image-20201105165509532

  • 不需要this

image-20201106092825175

image-20201106093256677

image-20201106093340157

useEffect 监听受影响

useEffect是监听,数据的改变,还是使用usestate

image-20201105165731808

image-20201105170122703

num改变之后,触发useEffect

image-20201105170421057

componentDidMount的操作,可以写在useEffect中 取代生命周期

image-20201106094049830

[]表示要跟踪的事情

image-20201106095556786

image-20201106095420435

image-20201106095543479

useContext 组件通信

  • 引入儿子组件Child1,儿子组件中引入了Child11孙组件

    image-20201106100355228

新建文件context/index.js

新的对象,类似bus

image-20201106100637713

在UserContext.js中使用

公共数据提供者

image-20201106100758426

Child1中儿子组件中

  • 可以通过props,一层层传,在function的括号中,传入props即可

Child11孙组件中

  • 可以通过props,一层层传

image-20201106101023208

  • 可以通过context

image-20201106101006382

useref 标签标记取值

获取输入框的值 传统写法

image-20201106104442798

image-20201106104232666

使用useref

image-20201106104456883

let usernameInput= useRef()

image-20201106104605468

此时ref后面不能是字符串

useCallback 缓存函数

image-20201106135518062

子组件child1.js

image-20201106141536397

image-20201106142314849

把子组件用memo包裹起来,缓存函数

image-20201106142709491

父组件

常规写法,重复渲染,重复加载组件

image-20201106141656245

不希望组件重新被加载,被渲染

不希望子组件,再次受到渲染,则用memo包裹

image-20201106141931084

把要做的事情,写到callback里面

image-20201106142015309

image-20201106142232479

注意:

image-20201106143104641

useMemo 缓存数值(变量)

image-20201106110337812

注意:所谓性能优化,就是提高缓存

未缓存的

image-20201106140433625

image-20201106140744689

调用要写到return里面

使用memo进行缓存

用useMemo包裹起来,就可以缓存数值

image-20201106141139525

image-20201106141029911

Hook跨组件使用ref

以下就是 父调子的ref

引入,要使用forwardRef,可以向前传

让其具有传递的属性

image-20201106105216008

image-20201106105239112

把子组件的函数,直接传给父元素

image-20201106105412744

方法放入useImperativeHandle中,并传入props,ref

image-20201106105752570

在父组件使用

image-20201106105712687

image-20201106105924239

只能点到这个组件内部的函数

Hooks配合react-redux的两种方法

传统写法

新写法

userSelector

Hook 父传子

父组件

image-20201106103005672

子组件

image-20201106103048316

Hook子传父

子组件

image-20201106103250271

父组件

在父组件中定义事件

image-20201106103211089

image-20201106103329510

Hook中的路由跳转

image-20201106143453422

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值