WHY

1.React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)。
解决此类问题的方案:
一类:render props 和 高阶组件,需要重新组织你的组件结构。

如果你在 React DevTools 中观察过 React 应用,你会发现由 providers,consumers,高阶组件,render props 等其他抽象层组成的组件会形成“嵌套地狱”。
尽管我们可以在 DevTools 过滤掉它们,但这说明了一个更深层次的问题:React 需要为共享状态逻辑提供更好的原生途径。

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

2.组件预编译会带来巨大的潜力
使用 class 组件会无意中鼓励开发者使用一些让优化措施无效的方案,而且class 也给目前的工具带来了一些问题。e.g:class 不能很好的压缩,并且会使热重载出现不稳定的情况。因此,推荐函数式

3.使用 Hook 其中一个目的就是要聚合功能模块,不被生命周期函数分割
比如useState实现值与setState的映射关系
比如effect解决 class 中生命周期函数经常包含不相关的逻辑,但又把相关逻辑分离到了几个不同方法中的问题。

函数式组件没有实例的概念,函数通过执行去渲染

//函数组件1.0
const Example = (props) => {// 你可以在这使用 Hookreturn <div />;
}//函数组件2.0
function MyFunctionalComponent() {// 你可以在这使用 Hookreturn <input />;
}class Parent extends React.Component {constructor(props) {super(props);this.textInput = React.createRef();}render() {// 这样没用!函数式组件根本就没有实例!return (<MyFunctionalComponent ref={this.textInput} />);}
}

Hook

React 16.8 的新增特性
在一些模块中包含了 React Hook 的稳定实现。
Hook 是能让你在函数组件中不编写 class 的情况下使用 state 以及其他的 React 特性。它们名字通常都以 use 开始

规定:
只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用。
只能在 React 的函数组件中调用 Hook。不要在其他 JavaScript 函数中调用。(还有一个地方可以调用 Hook —— 就是自定义的 Hook 中)

 useEffect(function persistForm() {// 												

React函数式组件Hooks开发相关推荐

  1. React 函数式组件缓存原理

    对 React 函数式组件缓存的思考 自从 React 16.8 版本推出 Hooks 用法以来,围绕函数组件的优化出现了各种不同的思考.本篇文章从 React 底层 Render 角度,分析 Rea ...

  2. [react] 函数式组件有没有生命周期?为什么?

    [react] 函数式组件有没有生命周期?为什么? 没有生命周期 因为他没有继承React.Component 所以也不需要render() 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容 ...

  3. React.js组件化开发第一步(框架搭建)

    开始前 安装 node.js; 安装 cnpm; 安装 yarn; 安装完成yarn后, 将镜像替换成国内的: $ yarn config set registry 'https://registry ...

  4. react函数式组件传值之父传子

    今天我们主要说下react函数式组件如何进行父组件向子组件传值.在开发过程中,为了提高可读性或者复用性,我们会进行组件的拆分.先说下,我们在引入子组件时,子组件的名字一定要大写,否则会报错(这是个ba ...

  5. React基础(2)—— React函数式组件使用ref

    React函数式组件使用ref ref ref的作用 ref用于获取DOM元素或子组件实例. useRef useRef作用 useRef用于返回一个可变的ref对象.这个refduix的curren ...

  6. React函数式组件

    React组件:可以分为类组件和函数式组件 1.函数式组件中没有state 2.函数式组件中没有生命周期(重点,涉及到生命周期的方法只能在类组建中定义) 可以借助react提供的hooks在函数式组建 ...

  7. 【React+ts】从零开始搭建react函数式组件+router+redux+less+sass+axios反向代理+antd(保姆式教学)

    前提 你需要准备好node.js版本不低于6.14.8 和 git 文章内容比较长(保姆级别教程),全是干货,请耐心看完 通过create-react-app脚手架搭建项目 1.第一步 注: 项目名称 ...

  8. React 函数式组件封装购物车(本文章对入门选手不是很友好)

    分析说明: 注意:React 脚手架默认支持 sass,但是需要自己手动安装 sass 依赖包(用来解析 sass 语法)安装命令:yarn/npm add sass 步骤: 根据模板搭建基本页面结构 ...

  9. React心得之降龙十八掌:第二式-飞龙在天( React组件化开发及相关概念)

    引言 (乾卦九五)<彖>曰:"'飞龙在天',大人造也." 学习了上一章,想必我们对于React有了一个初步的认识,了解了什么是React.什么是JSX.模块与组件.组件 ...

  10. 函数式组件与类组件区别-心智模型

    与React类组件相比,React函数式组件究竟有何不同? 区别:心智模型不同,函数式组件捕获了渲染所用的值. 函数式组件与类组件有何不同? - Overreacted他们是完全不同的宝可梦哦.htt ...

最新文章

  1. 任正非:管理就要铲除公司夹心层!
  2. 什么?程序员还要了解经济学?!
  3. 提高 TDD 效率的一些小诀窍
  4. .net读写 更新 删除(操作)xml文件
  5. php双层foreach,php 双层foreach 如何提升效率
  6. jmx jolokia_使用Jolokia和JMX进行客户端服务器监视
  7. leetcode练习——数组篇(1)(std::ios::sync_with_stdio(false);std::cin.tie(nullptr);)
  8. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
  9. linux 远程桌面配置,linux 远程桌面的配置
  10. html标记语言图像标记_为什么我喜欢这些标记语言
  11. Beta 冲刺(2/7)
  12. python字符串反向输出_Python反向字符串– 5种方法和最佳方法
  13. Go -- go语言指针
  14. JSLIU 的 wxWindows 入门
  15. FlexSim仿真软件入门笔记:基本操作、快捷键
  16. 免费的HTTP代理IP服务器地址
  17. 武汉理工大学计算机辅助项目管理简答题,武汉理工大学软件项目管理实验报告...
  18. 六脉连环大总结,教你干趴Docker
  19. ensp 交换机与路由器ospf_华为三层交换机和路由器建立OSPF关系
  20. VBA基础知识整理(字典,自定义函数)

热门文章

  1. 基本过程: 小区搜索
  2. CentOS中安装MongoDB
  3. 在线制作微信跳转浏览器下载app源码
  4. 艾司博讯:在拼多多卖书需要营业执照么
  5. Halcon光度立体技术
  6. 每日科创板之717:柏楚电子晶晨股份注册生效 心脉医疗等发布招股说明书
  7. (附源码)计算机毕业设计ssm工资管理系统 PPT
  8. [独有源码]java-jsp校园视频监控系统yub34从不会做毕业设计到成功完成的过程与方法
  9. C# 中遇到引用 log4net出现黄色三角形图标解决方案
  10. 李嘉诚:商者无域——from 《环球企业家》