React 入门(7)钩子函数

序言

为什么要使用Hook?

常用的两种编写组件的方式就是就是class组件和函数组件。class组件:通过继承React.Component来构建组件,虽然提供了state状态和完备的生命周期函数,但是也有很多不方便的地方。

很多事件需要在挂载期componentDidMount和更新期componentDidUpdate重复书写。有些副作用还需要在卸载期componentWillUnmount卸载。代码重复度很高,而且难以理解,一旦忘记了就会引起不少bug。

通过class书写自然会碰到this的问题,要想使用this函数不能忘记绑定。代码十分冗余。

函数组件:通过函数直接书写的组件,看起来是简洁了许多,但是不能使用state,也没有生命周期函数、更不能使用react的一些其他特性。只能通过父组件传递进来,任人鱼肉,只能惨淡的沦为展示组件。

那么,函数组件就只能沦为展示的花瓶吗?能结合class组件能使用react特性的优点和函数组件简洁优雅的特性吗?好在react hook来了,函数组件的春天来了。

React 16.8 新增Hook特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。

单从图两个特性,就能看出Hook大大简化了React的状态管理和生命周期,并且在无状态函数中可用。

React中Function Component与Class Component 有何不同?

使用useEffect,可以直接在函数组件内处理生命周期事件。 如果你熟悉 React class 的生命周期函数,你可以把 useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个函数的组合。

React进阶 会使用Hook吗?推荐

什么是Hook?

是不是感觉hook挺神奇的?hook是什么?怎么使用?不用惊讶,hook就是一个钩子函数,钩着react的一些api供给函数组件使用。

自定义Hook

只在最顶层

之下React函数调用

Hooks API Reference

useHooks

我们为什么要拥抱React Hook

基本的钩子

useState

useEffect

useContext

useContext-解决多层传递属性的灵丹妙药

添加的钩子

useReducer

useReducer代替Redux

useCallback

useMemo

useRef

useImperativeMethods

useMutationEffect

useLayoutEffect

高阶组件HOC

简单来说,高阶组件可以看做一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。

高阶组件就是把一个旧的组件变为新的组件。同时增加一些属性。

缺点:

 

children: React.ReactNode;
defaultProps

 

在 React 中,数据是单向流动的。从示例中,我们能看出来表单的数据源于组件的 state,并通过 props 传入,这也称为单向数据绑定。然后,我们又通过 onChange 事件处理器将新的表单数据写回到组件的 state,完成了双向数据绑定。

React 16.6 之 React.memo()

{...props}

复杂组件难以理解,尤其是生命周期函数

eslint

"eslint.validate": [
    "javascript",
    "javascriptreact",
    { "language": "typescript", "autoFix": true },
    { "language": "typescriptreact", "autoFix": true }
  ]

 

命令

yarn add  axios

cnpm install axios

 

资料

Hook React hooks React Hook 16.12版本新特性Hook详解

posted @   ~沐风  阅读(1340)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示