-Class中最重要的2个特性都没有用到:

  • 一方面,React组件之间是不会相互继承的。即没有利用到Class的继承特性

  • 另一方面,所有UI都是由状态驱动的,因此很少会在外部去调用一个类实例(即组件)的方法。组件所有方法都是在内部调用,或者作为生命周期方法被自动调用的

目标:

-给函数组件加上状态

因为函数和对象不同,并没有一个实例的对象能够在多次执行之间保存状态,所以需要一个外部的空间来保存这个状态,并且能够检测其变化,从而能触发组件的重新渲染。

进一步:

需要一个机制,能够把一个外部的数据绑定到函数的执行。当数据变化时,函数能够自动重新执行。

在React中,这个机制就是Hooks

即,把某个目标结构钩到某个可能会变化的数据源或者事件源上,那么当被钩到的数据或者事件发生变化,产生这个目标结果的代码会重新执行,产生更新后的结果。

  • Hooks带来的最大好处——逻辑复用

    • 即Hooks被钩的对象,不仅可以是数据源,也可以是另一个Hook执行的结果。
    • class实现逻辑复用,则需要HOC等复杂的设计模式(还有renderProps)

为什么要发明Hooks?相关推荐

  1. 【译】什么是React Hooks

    原文:What are React Hooks? 作者:Robin Wieruch 译者:博轩 React Hooks 于 2018年10月的React Conf 中引入,作为在 React 函数组件 ...

  2. Svn 笔记—— Hooks

    pre-commit 钩子功能: [root@Da hooks]# cat /application/svndata/sadoc/hooks/pre-commit #!/bin/bash #Check ...

  3. react hooks使用_为什么要使用React Hooks?

    react hooks使用 The first thing you should do whenever you're about to learn something new is ask your ...

  4. react hooks使用_如何使用React和Hooks检测外部点击

    react hooks使用 by Andrei Cacio 通过安德烈·卡西奥(Andrei Cacio) 如何使用React和Hooks检测外部点击 (How to detect an outsid ...

  5. react hooks使用_如何使用Hooks将React类组件转换为功能组件

    react hooks使用 by Balaganesh Damodaran 通过Balaganesh Damodaran 如何使用Hooks将React类组件转换为功能组件 (How to conve ...

  6. 超赞网站推荐_字体(更多)超赞-标志性发明

    超赞网站推荐 by Pubudu Dodangoda 通过Pubudu Dodangoda 字体(更多)超赞-标志性发明 (Font (More) Awesome - an iconic invent ...

  7. 优化自定义函数_10分钟教你手写8个常用的自定义hooks

    前言 Hook 是 React 16.8 的新增特性.它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性.本文是一篇以实战为主的文章,主要讲解实际项目中如何使用ho ...

  8. Subversion hooks脚本配置演示及排错

    Subversion提供了强大的hooks脚本功能,主要用于控制commit操作前,后的执行动作,以及lock,unlock操作前,后的执行动作:默认在版本仓库下的hooks目录下存在着这些脚本的模板 ...

  9. React学习笔记6:React Hooks API总结

    useState-保存状态(惰性初始化) 作用 函数组件添加状态 注意事项 初始化以及更新state 用来声明状态变量 使用步骤(使用useState来创建状态) 引入import React,{us ...

最新文章

  1. [Android]打开eclipse报错:发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。...
  2. chrome开发者工具功能拾遗:Sources面板篇
  3. c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...
  4. javascript设计模式-模板方法模式(Template)
  5. 微软预展 Windows Server Studio 2008 将锁定四大主要任务
  6. spring 加载java类_在Spring中基于Java类进行配置的完整步骤
  7. Servlet拦截器
  8. C# 依赖注入那些事儿
  9. mysql的增_MySQL之增_insert-replace
  10. Idea代码统计工具
  11. 047ssm在线视频教育网站源码
  12. 【数据集的制作】VOC2007数据集格式的转换(voc2yolo)与划分
  13. h计算机二级基础知识题库,2020计算机二级Office考试题库真题
  14. 我国网络广告的现状及未来发展趋势分析
  15. 二维列表的转置(行列互换,首行变首列,尾行变尾列)
  16. 当我们谈深度学习时,我们用它落地了什么?阿里云内容安全功能全新升级
  17. freeswitch部署及网关调试
  18. 什么是MyCat?原理是啥?
  19. Small Object Detection using Context and Attention
  20. UART 和 N_GSM协议 及 linux设备驱动TTY关系

热门文章

  1. ROS2学习笔记22--使用launch启动/监听多个node节点
  2. 从0到1搭建数据湖Hudi环境
  3. 贪玩蓝月-大漠模拟脚本源码
  4. 美团外卖API接入(二)
  5. 从Mac连接Windows共享打印机(2)
  6. 怎么把ogg音乐格式转换成mp3
  7. Linux进程通信的试验
  8. 【翻译】ARM虚拟化软件和架构支持的设计,实现和评估
  9. Promise 入门
  10. 二零零七年五一节自驾游记(十)--------0501若尔盖花湖II