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写法

相关推荐
商业白皮书5 小时前
杭州企业做 GEO 怎么选服务商?B2B 制造、外贸出海与品牌连锁选型指南
笔记
袋鼠云数栈UED团队5 小时前
AI Coding 方法论分析:同一个需求 SpecKit 、 Superpowers、 MattpocockSkills 不同设计
前端·aigc·ai编程
掰头战士5 小时前
Prompt Cache,如果agent全靠LLM方做隐式缓存实在不够用。
前端·llm·agent
商业白皮书6 小时前
密不透风的瑕疵防线:东集SEV400视觉传感器,定义“轻量化”精准检测
笔记
LEE6 小时前
前端转型全栈 01:数据建模,前端最大的盲区
前端·javascript·后端
货拉拉技术6 小时前
个人提效,攒不成组织提效:货拉拉 AI Coding 落地实践
前端
雪芽蓝域zzs6 小时前
第四十七节:驾驶舱大屏 ECharts 图表集成
前端·javascript·vue.js
Software攻城狮6 小时前
【React 学习方向(项目上手注意点)】
前端
林太白7 小时前
js-var和let以及const区别
前端·面试
看谷秀7 小时前
arkts-10 实战
前端·arkts