React-Hooks笔记

class组件存在的问题和添加Hooks的原因

一、函数组件的特点

  • 没有组件实例
  • 没有生命周期
  • 没有state和setState,只能接收props

二、class组件的问题

  • 大型组件很难拆分和重构,很难测试(即class不易拆分)
  • 相同业务逻辑,分散到各个方法中,逻辑混乱
  • 复用逻辑变得复杂,如:Mixins,HOC,Render Prop

三、React组件更易用函数表达

  • React提倡函数式编程
  • 函数更灵活,更易拆分,更易测试
  • 但是函数组件太简单,需要增强能力-----Hooks

Hooks的具体讲解

1、State Hook

注意:让函数组件实现state和setState

  • 默认函数组件没有state
  • 函数组件是一个纯函数,执行完即销毁,无法存储state
  • 需要State Hook ,即把state功能 "钩" 到纯函数中

1、函数组件:

javascript 复制代码
import React from 'react'
import { useState } from 'react';

function ClickCount() {
    const [count, setCount] = useState(0);
    return (
        <div>
            <p>你点击了{count}次</p>
            <button onClick={() => setCount(count + 1)}>点击</button>
        </div>
    )
}

export default ClickCount;

2、class组件:

javascript 复制代码
import React from 'react'

class ClickCountClass extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            count: 0
        }
        this.handleClick = this.handleClick.bind(this);
    }
    render() {
        return <div>
            <p>你点击了{this.state.count}次</p>
            <button onClick={this.handleClick}>点击</button>
        </div>
    }
    handleClick() {
        this.setState({
            count: this.state.count + 1
        })
    }
}

export default ClickCountClass;

3、useState使用总结

  • useState(0)传入初始值,返回数组state,setSate
  • 通过state获取值
  • 通过setState(1)修改值

4、Hooks命名规范

规定所有Hooks都用use开头,如:useXXX

自定义Hooks也要用use开头

非Hooks的地方,尽量不要用useXXX写法

相关推荐
陈卫军老师8 小时前
陈卫军语录全集总结:12句话,一条主线
经验分享·笔记
To_OC9 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
excel11 小时前
研究 Vue 3 源码的收获
前端·vue.js
2501_9269783312 小时前
给自指系统接一个外部锚 —— 一个关于「用 AI 观察自己」的方法
人工智能·经验分享·笔记·机器学习·ai写作
可乐鸡翅yeah_12 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx13 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师13 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow13 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
念何架构之路13 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他13 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程