State Hook

 useState():状态钩子。纯函数组件没有状态,用于为函数组件引入state状态, 并进行状态数据的读写操作

语法、参数及返回值说明::

 const [xxx, setXxx] = React.useState(initValue)
  • 参数: 第一次初始化指定的值在内部作缓存
  • 返回值: 包含2个元素的数组,第1个为内部当前状态值,第2个为更新状态值的函数

setXxx()2种写法:

  • setXxx(newValue): 参数为非函数值,直接指定新的状态值,内部用其覆盖原来的状态值
  • setXxx(value => newValue): 参数为函数,接收原本的状态值,返回新的状态值,内部用其覆盖原来的状态值

Context Hook

useContext():共享状态钩子。作用就是可以做状态的分发,在React16.X以后支持,避免了react逐层通过Props传递数据。
Context:一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信

语法、参数及返回值说明::

  1. 创建Context容器对象:
const XxxContext = React.createContext()
  1. 渲染子组件时,外面包裹xxxContext.Provider, 通过value属性给后代组件传递数据:
<xxxContext.Provider value={数据}><子组件/>
</xxxContext.Provider>
  1. 后代组件读取数据:
const {} = useContext(XxxContext)

例如:A组件和B组件需要共享一个状态:

import React, { useContext } from "react";
const HookTest = ()=> {const AppContext = React.createContext();const A = ()=> {const { name } = useContext(AppContext)return (<p>我是A组件,我的名字是:{ name };<span>我是A的子标签:{ name }</span></p>)}const B= ()=> {const { name } = useContext(AppContext);return (<p>我是B组件,名字是: { name }</p>)}return (<AppContext.Provider value={{ name: '张三'}}><A /><B /></AppContext.Provider>)
}
export default HookTest;

3、Effect Hook

useEffect():副作用钩子。用来更好的执行副作用操作(用于模拟类组件中的生命周期钩子),如异步请求等,在类组件中会把请求放在componentDidMount里面,在函数组件中可以使用useEffect()

useEffect(() => { // 在此可以执行任何带副作用操作return () => { // 在组件卸载前执行// 在此做一些收尾工作, 比如清除定时器/取消订阅等}
}, [stateValue]) // 如果指定的是[], 回调函数只会在第一次render()后执行

参数、返回值说明:

  • useEffect()接受两个参数,第一个参数是要进行的异步操作,第二个参数是一个数组,用来给出Effect的依赖项,只要这个数组发生变化,useEffect()就会执行。
  • 当第二项省略不填时。useEffect()会在每次组件渲染时都会执行useEffect,只要更新就会执行。
  • 当第二项传 空数组[ ] 时,只会在组件挂载后运行一次。
  • useEffect()返回值可以是一个函数,在组件销毁的时候会被调用。清理这些副作用可以进行如取消订阅、清除定时器操作,类似于componentWillUnmount。

React中的副作用操作:

  • 发ajax请求数据获取
  • 设置订阅 / 启动定时器
  • 手动更改真实DOM

useEffect两个注意点:

  • React首次渲染和之后的每次渲染都会调用一遍useEffect函数,而之前要用两个生命周期函数分别表示 首次渲染(componentDidMonut) 和更新导致的重新渲染(componentDidUpdate)
  • useEffect中定义的函数的执行不会阻碍浏览器更新视图,也就是说这些函数时异步执行的,而componentDidMonut和componentDidUpdate中的代码都是同步执行的。

总结:

可以把 useEffect Hook 看做如下三个函数的组合:componentDidMount()、componentDidUpdate()、componentWillUnmount()

react hook函数相关推荐

  1. react+hook函数组件实现表单添加数据,表格展现

    效果图: 目录结构:(目分为主页面BookTable,以及两个组件,表格组件和添加书籍组件) 主页面:主要是将两个组件引入进页面,并将添加书籍事件.删除书籍事件传递给子组件,由子组件触发. impor ...

  2. react hook + stamen store + pug实现纯函数无痛版react开发体验

    基于最新的react 16.7.0-alpha.2,结合react hook + stamen store + pug,实现纯函数无痛版react开发体验,畅快度直逼clojurescript + r ...

  3. 源码解析 React Hook 构建过程

    2018 年的 React Conf 上 Dan Abramov 正式对外介绍了React Hook,这是一种让函数组件支持状态和其他 React 特性的全新方式,并被官方解读为这是下一个 5 年 R ...

  4. React Hook基本使用踩坑指南

    React因为提倡函数式编程,所以提出了Hook思想来增强函数组件的功能,以此来替代基于Class的组件.但是我们有可能从基于Class这样的实例化组件转向函数组件时思想还没有完全转过来,还是用基于实 ...

  5. 如何使用React Hook

    class组件和函数组件 我们希望编写代码的时候,尽可能将整块可复用的部分封装起来.这样可以一定程度提高代码的内聚性,将其耦合性,使得程序开发变得更加可维护.通常情况下,我们将代码块抽离成组件来实现封 ...

  6. react hook问题讲解

    React Hook 官网地址:https://react.docschina.org/docs/hooks-faq.html (1)问题分析? Hook 是什么? Hook 是一个特殊的函数,它可以 ...

  7. hook xposed 自定义类_【开始学习React Hook(1)】Hook之useState

    react hook是react推出的一种特殊函数.这些函数可以让你在不创建react class的情况下依然可以使用react的一些特性(诸如目前react的钩子函数拥有的所有特性). 最常用的ho ...

  8. React hook 中的数据获取

    相关说明: 对于hook相关词不翻译,感觉翻译后怪怪的. effect hook 效果钩子,用于执行一些副作用例如获取数据 . state hook 状态钩子. 使用----------- 和 --- ...

  9. react讲解(函数式组件,react hook)

    文章目录 前言 一.函数式组件 理解: 作用 代码示例: 函数组件注意事项 二.React hook React Hooks 优势 Hook 使用规则 2.常用的hook useState useEf ...

最新文章

  1. 亚信科技虚拟手机服务器地址,亚信云手机服务器地址是什么
  2. 在VMWare上安装linux
  3. #define 用法
  4. 字节跳动获CVPR2021 细粒度图像竞赛双料冠军
  5. 给网站增加https的简单方法
  6. overlay网络的优势
  7. 一步一步CCNA之六:交换机vtp配置
  8. 鸟哥的Linux私房菜(基础篇)- 第二十章、启动流程、模块管理与 Loader
  9. Linux 进程管理命令
  10. Linux 之二 Linux 多线程
  11. 通过Zuul上传文件,禁用Zuul的Filters
  12. 正则中除了空格还有什么标识间距
  13. Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml
  14. java学习(5):全局变量和局部变量
  15. Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源
  16. 精品软件 推荐 卡巴斯基安全软件 本人使用过的效果最好的杀毒软件之一哟...
  17. ArcGIS为什么计算面积被禁用
  18. IT项目经理成长手记
  19. APP开发的需求分析
  20. linux从源码编译cairo,如何在windows下编译cairo

热门文章

  1. QQ2007正式版协议分析
  2. css3实现非矩形图片效果
  3. c语言兵种管理系统,《帝国时代2:征服者》v1.0c多功能兵种修改器v1.5
  4. 帝国cms html5 编辑器,帝国cms整合百度编辑器ueditor图文教程
  5. 看小企业如何玩转大数据? 智慧商贸添助力
  6. PMO成功的六个关键因素
  7. Pycharm破解方法注册码
  8. win10快捷键 摆脱鼠标 高效操作
  9. 鹿小葵要整理心情重新出发!
  10. 计算机课对分课堂,计算机专业硬件课程对分课堂的应用