React Hooks学习

【React Hooks详解】由浅入深从理解到自己封装一个Hook 本文将由浅入深探讨React Hooks的使用,并指导你如何自定义封装Hooks,以进一步提升开发效率和代码质量。 阅读详情

React Hooks

useState

很常用的一个hook,可以保存函数组件中的状态

参数

useState(val)
传进去的是初始状态的值
useState(true) usestate(50) useState('aaa')…
也可以是一个函数,会自动拿到函数的返回值

useState(() => {
    ...
    const res = a + b;
    return res;
})

返回

useState() 会返回一个数组,数组的第一项是当前的初始状态,第二项是个函数,用来设置这个状态

作用:

为函数提供状态,可以为保存状态,并提供最新的值
一个简单的计数例子

import { useState } from "react"
export default function HooksUseState() {
    const [count, setCount] = useState(0);
    return (
        <div>
            <button onClick={() => setCount(count + 1)}>{count}</button>
        </div>
    );
}

执行过程:
useState会返回一个数组,数组的第一项是当前的状态,第二项是设置这个状态(设置一个新值,引用类型的值注意)
组件一开始加载的时候,会先把 count 的初始值展示在页面上
然后执行点击事件 onCLick,setCount更新了 count
count 一更新,整个函数组件就会重新执行一遍,但是 count 拿到的值是更新后的值,保存了之前的状态

特性:

  • 只能在函数的主体中使用 useState,不能在if/for 等其他函数中使用
    因为react按照hooks的调用顺序识别每一个hook
  • 每个useState之间相互不影响
    并且如果对个useState一起执行的话,函数会合并更新为一次
    下面是多个useState的例子
    export default function HooksUseState() {
        const [count, setCount] = useState(0);
        const [flag, setFlag] = useState(false);
        const [arrList, setArrList] = useState([]);
        const handleClick = () => {
            setCount(count + 1);
            setFlag(!flag);
            setArrList(['张三']);
        };
        console.log(111); // 只会打印一次,说明函数执行了一次
        return (
            <div>
                <button onClick={handleClick}>{count}</button>
                <div>count: {count}</div>
                <div>flag: {flag ? '开' : '关'}</div>
                <div>arrList: {arrList}</div>
            </div>
        );
    }
    
    如果 加个定时器
        const handleClick = () => {
            setCount(count + 1);
            setTimeout(() => {
                setFlag(!flag);
            });
            setArrList(['张三']);
        };
        // 会执行两次,说明函数执行了两次
        // setCount(count + 1) 和 setArrList(['张三']) 合并成了一次
        // setArrList(['张三']) 执行后,函数又执行了一次
        console.log(111);
    
  • 设置值的时候,可以是一个函数,这样就不用依赖函数中的状态了
    const handleClick1 = () => {
        // 还可以写成函数的形式,这样就能获取到上一次的状态,再进行操作,就不必依赖当前函数组件中的状态了
        setCount1(v => {
            return v + 1;
        });
    }
    return (
        <button onClick={handleClick1}>{count1}</button>
    )
    
    或者如下
    const handleClick1 = useCallback(() => {
        // setCount1(v => { // 这样写,就不用依赖函数中的状态了
        //     return v + 1;
        // });
        setCount1(count + 1); // 这样写还要依赖当前函数中的状态
    }, [count]); // 如果不写依赖项,count1 就一直获取到的是旧值
    

useEffect

作用

处理函数的副作用

函数的副作用

什么是函数的副作用,一个函数除了函数本身的功能外,其他的操作都是副作用
比如函数组件的功能就是把state和props的值渲染在页面上,除此之外其他的操作,比如数据请求,修改dom等都是副作用
比如下面一个函数

    const [value, setValue] = useState('')
    const increment = (a, b) => {
        const res = a + b;
        setValue(res);
        return res;
    };

这个函数的主要作用就是两个值的相加,其中的副作用就是 setValue(res)

参数

useEffect(cb: () => () => any, arr ?: [])
第一个参数是一个回调函数(不要写成async函数,async返回值是一个Promise),返回值也是一个回调函数
第二个参数是一个可选的数组,表示依赖项,根据依赖的state,会重新执行第一个参数的回调

使用

一个简单的例子

import { useEffect, useState } from "react";
export default function HooksUseEffect() {
    const [count, setCount] = useState(0);
    useEffect(() => {
        document.title = count; // 副作用操作
    })
    return (
        <div>
            <button onClick={() => setCount(count+1)}>{count}</button>
        </div>
    );
}

其中给 document.title 赋值就是一个 dom 操作,属于副作用

执行时机

useEffect 有两个参数,第一个是个回调函数,第二个是一个依赖数组

  • 不传第二个参数
    useEffect 会在每次state有变化的时候,就执行第一个参数回调函数
    如下例子,会在每次count改变的时候,执行一次useEffect回调函数的第一个参数
    import { useEffect, useState } from "react";
    export default function HooksUseEffect() {
        const [count, setCount] = useState(0);
        useEffect(() => {
            document.title = count; // 副作用操作
            console.log(111);
        })
        return (
            <div>
                <button onClick={() => setCount(count+1)}>{count}</button>
            </div>
        );
    }
    
  • 第二个参数是一个 空数组
    useEffect 只会在组件第一次加载的时候,执行一次
    下面的例子,document.title一直保持,count的初始值0
    useEffect(() => {
        document.title = count; // 副作用操作
    }, [])
    
  • 添加一个特定的依赖项
    第二个参数数组中 添加一个特定的依赖向,只有依赖改变的时候,才会执行useEffect的第一个参数
    下面的例子,当触发count改变的时候,不会改变document.title,当触发flag改变的时候,才会给documen.title赋值
    const [count, setCount] = useState(0);
    const [flag, setFlag] = useState(false);
    useEffect(() => {
        document.title = count; // 副作用操作
        console.log(111);
    }, [flag])
    return (
        <div>
            <button onClick={() => setCount(count+1)}>{count}</button>
            <button onClick={() => setFlag(!flag)}>{flag ? '开' : '关'}</button>
        </div>
    );
    

清除副作用

比如说一个定时器,在组件销毁的时候,没有去取消定时器,定时器还是存在的,还是会继续执行的,就会在成一些错误
useEffect的第一个参数回调函数,会返回一个函数,这个函数会在组件销毁前执行,因此处理一些副作用可以在这个函数里操作
如下例子

import { useEffect, useState } from "react";
export default function HooksUseEffect() {
    const [count, setCount] = useState(0);
    useEffect(() => {
        const timer = setInterval(() => {
            setCount(v => v+1);
        }, 1000);
        return () => {
            clearInterval(timer); // 清除副作用
        }
    }, [])
    return (
        <div>
            <button>{count}</button>
        </div>
    );
}

useRef

受控和不受控组件

都是指表单组件

  • 受控组件
    表单控件的value值需要state去提供,然后通过事件去修改这个state
    import {useState} from 'react';
    const [val, setVal] = useState('');
    <input 
        type="text"
        value={val}
        onInput={e => setVal(e.target.value)}
    />
    <p>{val}</p>
    
  • 不受控组件
    不通过state去管理表单组件的value
    import {useRef} from 'react';
    const iptRef = useRef(null);
    <input type="text" ref={iptRef} />
    <button onClick={() => console.log(iptRef.current.value)}>点击</button>
    

其他组件

  • 如果是类组件也可以直接拿到该组件的实例
    import React, {useRef} from 'react';
    class Component2 extends React.Component {
        state = { // state属性
            message: '我是类组件',
            show: true
        }
        onToggle() { // 方法
            const {show} = this.state;
            this.setState({show: !show});
        }
        render() {
            if (this.state.show) {
                return <div>{this.state.message}</div>
            }
            return (
                <div>...</div>
            )
        }
    }
    export default function HooksRef() {
        const component2Ref = useRef(null);
        return (
            <div>
                <Component2 ref={component2Ref} />
                <button onClick={() => component2Ref.current.onToggle()}>点击</button> // 调用子组件的方法
            </div>
        )
    }
    
  • 如果是函数组件就不能直接拿了,而且也只能拿到组件下面的某个元素,组件上的方法需要 通过useImperativeHandle方法想父组件传递出去
    如下:
    import {forwardRef, useCallback, useImperativeHandle, useRef, useState} from 'react';
    const Component1 = forwardRef((props, ref) => {
        const [show, setShow] = useState(true);
        const ipt = useRef(null);
        const onToggle = useCallback(() => setShow(v => !v), []); // 事件
        useImperativeHandle(ref, () => { // 将子组件中的方法传递给父组件
            return {
                onToggle,
                ipt: ipt.current
            }
        })
        if (show) {
            return <div><input ref={ipt} type="text" placeholder="我是子组件" /></div>
        }
        return <div>...</div>
    })
    export default function HooksRef() {
        const component1Ref = useRef(null);
        return (
            <div>
                <Component1 ref={component1Ref} />
                <button onClick={() => component1Ref.current.onToggle()}>点击</button> {/* 调用子组件的方法 */}
            </div>
        )
    }
    

useContext

作用

跨组件传值,顶级组件 -> 孙组件,传值

用法1

创建一个createContext()

import {createContext} from 'react';
export const context = createContext();

顶级组件
createContext()身上有两个组件,一个是提供者Provider

import { useState } from "react";
import AComponent from "./AComponent";
import { context } from "./constants";
export default function HooksContext() {
    const [count, setCount] = useState(0)
    return (
        // 将需要提供给子孙组件的状态通过value属性传递
        <context.Provider value={{count, setCount}}>
            <div>
                <h2>顶级组件</h2>
                <div>
                    <button onClick={() => setCount(v => v+1)}>count: {count}</button>
                </div>
                <AComponent />
            </div>
        </context.Provider>
    )
}

子孙组件
另一个是消费者Consumer, Consumer里面有一个函数,通过函数,可以拿到顶级组件传过来的变量状态和方法

import { context } from "./constants"
export default function DComponent() {
    return (
        // 接收顶级组件传过来的值
        <context.Consumer>
            {
                ({count, setCount}) => {
                    return (
                        <div style={{padding: '10px', border: '1px solid black'}}>
                            <h2>子组件D</h2>
                            <button onClick={() => setCount(v => v+1)}>count: {count}</button>
                        </div>
                    )
                }
            }
        </context.Consumer>
    )
}

用法2

在顶级组件中使用是一样的
在子孙级组件中,可以通过uesContext()拿到顶级组件传过来的值,不再需要Consumer组件了

import { useContext } from "react"
import { context } from "./constants"
export default function DComponent() {
    // 通过 useContext 拿到顶级组件传过来的值
    const {count, setCount} = useContext(context);
    return (
        <div style={{padding: '10px', border: '1px solid black'}}>
            <h2>子组件D</h2>
            <button onClick={() => setCount(v => v+1)}>count: {count}</button>
        </div>
    )
}

memo

作用

避免不必要的更新,当父组件中有状态变化的时候,跟子组件没有关系,子组件也进行了执行

// 子组件
const Component1 = (props) => {
    console.log(111);
    return (
        <div><div>子组件</div></div>
    )
}
// 父组件
export default function HooksMemo() {
    const [count, setCount] = useState(0);
    return (
        <div>
            <button onClick={() => setCount(v => v+1)}>count: {count}</button>
            <Component1 />
        </div>
    )
}

当父组件中的count状态发生变化的时候,父组件的html部分会重新执行一次,也就是说Component1组件明明是不需要更新的,但是更新了
可以使用memo函数包裹子组件,当依赖的状态发生变化的时候,子组件才会重新执行

import {useState} from 'react';
const Component1 = memo((props) => {
    console.log(111);
    return (
        <div>
            <div>子组件</div>
            <div>{props.flag ? 'on' : 'off'}</div>
        </div>
    )
})
export default function HooksMemo() {
    const [count, setCount] = useState(0);
    const [flag, setFlag] = useState(true);
    return (
        <div>
            <button onClick={() => setCount(v => v+1)}>count: {count}</button>
            <button onClick={() => setFlag(v => !v)}>切换</button>
            <Component1 flag={flag} />
        </div>
    )
}

当count发生变化的时候,子组件没有更新,当子组件依赖的flag发生变化的时候,组件才重新执行了

useCallback

作用

会将一个函数保存起来,当依赖项发生变化的时候,才会更新函数

参数

useCallback(回调函数, [依赖项])

例如:

import { useCallback, useState } from "react"
export default function HooksCallback() {
    const [count, setCount] = useState(0);
    const handleCountChange = useCallback(() => {
        console.log(count); // 此时 一致打印的是 count的初始值 0
        setCount(count + 1);
    }, []) // 因为依赖项数组为空数组,表明这个函数不以来任何的状态,每次获取函数都是内存中拿到的旧函数
    return (
        <div>
            <button onClick={handleCountChange}>count: {count}</button>
        </div>
    )
}
    const handleCountChange = useCallback(() => {
        console.log(count); // 这个时候每次执行的结果就是最新的count
        setCount(count + 1);
    }, [count]) // 改成这样,当count发生变化的时候,函数才会更新

useMemo

作用

当依赖的状态发生变化的时候,才会重新执行函数

参数

useMemo(回调函数, [])

例子,这是一个两个数求和的计算,当两个依赖的值其中一个发生变化的时候,才会重新计算结果

import { useMemo, useState } from "react"
export default function HooksUseMemo() {
    const [val1, setVal1] = useState(0);
    const [val2, setVal2] = useState(0);
    const res =  useMemo(() => {
        return +val1 + +val2;
    }, [val1, val2]) // 当依赖的变量发生变化的时候,才会重新执行第一个参数的回调函数
    return (
        <div>
            <div>
                <input
                    type="number"
                    value={val1}
                    onChange={(e) => setVal1(e.target.value)}
                />
                <span>+</span>
                <input
                    type="number"
                    value={val2}
                    onChange={(e) => setVal2(e.target.value)}
                />
                <span>=</span>
                <span>{res}</span>
            </div>
        </div>
    )
}
React Hooks 全解: 常用 Hooks 及使用场景详解 React 中常用的 10 个 Hooks,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useLayoutEffect、useImperativeHandle 和 useDebugValue。这些 Hooks 涵盖了状态管理、副作用处理、性能优化、DOM 操作等各个方面,为开发者提供了强大的工具,大幅提高了开发效率和代码质量。让我们一起探索 React Hooks 的强大功能,提升您的 React 开发水平。 阅读详情

相关推荐

趣味学习React Hooks 核心

趣味学习📚 React Hooks 核心

m0_72030584的博客 604

react hooks 学习

react hooks 学习 一. React Hooks是什么? React Hooks 是 React 16.8 引入的新特性,允许我们在不使用 Class 的前提下使用 state 和其他特性,组件尽量写成纯函数,如果需要外部功能和副作用,就用钩子把外部代码"钩"进来。 二. React Hooks解决的问题是? 状态共享,避免嵌套。用于解决长时间使用和维护react过程中常遇到的问题。 1.难以重用和共享组件中的与状态相关的逻辑。 2.逻辑复杂的组件难以开发与维护,当我们的组件需要处理多个互不相关的

weixin_44254470的博客 380

银河麒麟服务器操作系统V10-SP1部署gitlab服务

银河麒麟高级服务器操作系统 V10 SP1 部署GitHub

weixin_43173670的博客 2154

React Hooks 入门基础(详细使用)

hooks一套能够使函数组件更强大,更灵活的 “钩子”。React体系里组件分为类组件和函数组件。经过多年的实战,函数组件是一个更加匹配React的设计理念,也更有利于逻辑拆分与重用的组件表达形式,而先前的函数组件是不可以有自己的状态的,为了能让函数组件可以拥有自己的状态,所以从开始,Hooks应运而生。有了hooks之后,为了兼容老版本,class类组件并没有被移除,俩者都可以使用。有了hooks之后,不能在把函数成为无状态组件了,因为hooks为函数组件提供了状态。hooks。

卡尔特斯 2134

《阵列信号处理及MATLAB实现》阵列响应矩阵(均匀线阵、均匀圆阵、L型阵列、平面阵列和任意阵列)

《阵列信号处理及MATLAB实现》内容总结,如需阅读更详细内容请购买正版书籍。

APPLECHARLOTTE的博客 1万+

远程桌面(RDP)共享USB设备全攻略:不止Hyper-V,你的加密狗和CH340串口也能远程用

本文详细介绍了远程桌面(RDP)共享USB设备的完整解决方案,包括加密狗和CH340串口设备的远程使用技巧。通过RemoteFX USB重定向技术,用户可以在远程会话中无缝使用本地USB设备,提升工作效率。文章涵盖企业级配置、典型设备实战案例及高级故障排除方法,是远程工作者的实用指南。

weixin_42522964的博客 333

React高手必学:自定义Hooks,轻松飞升技术巅峰!

Hooks 是 React 16.8 版本引入的一项重要功能,它允许在函数式组件中使用状态和其他 React 特性。Hooks 旨在解决在类组件中使用复杂逻辑、共享状态和处理副作用时的一些问题,使得函数式组件具有更多的能力和灵活性。Hooks 是一些特殊的函数,它们允许你在React函数式组件中“钩入”状态、生命周期以及其他React特性。它们提供了一种无需类组件的方式,使得你可以在函数式组件中使用类似于this.state和this.props的概念。

Web面试那些事儿的博客 1210

手把手教你用Simulink+CANoe+Carsim搭建硬件在环仿真环境(避坑指南)

本文是一份详细的硬件在环仿真环境搭建指南,重点讲解如何将Simulink、CANoe和CarSim三大工具进行实战融合。内容涵盖软件版本兼容性、授权避坑、环境配置,并分步演示了从离线联合仿真到实现软实时同步的完整流程,旨在帮助汽车电子工程师高效构建稳定的HIL测试平台。

weixin_29092579的博客 405

React Hooks 学习实践项目推荐

React Hooks 学习实践项目推荐 本项目是一个关于React Hooks的学习和实践项目,主要使用JavaScript语言进行开发。该项目旨在提供一系列逐步深入的React Hooks示例,从基础场景到高级主题,帮助开发者更好地理解和应用React Hooks。 1. 项目基础介绍和主要编程语言 项目名称:React Hooks By Example 编程语言:JavaScript 本项目...

gitblog_00724的博客 859

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷

本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。

weixin_29216049的博客 430

论文翻译:2024 High-Confidence Computing A survey on large language model (LLM) security and privacy: The

大型语言模型(LLMs),如ChatGPT和Bard,已经彻底改变了自然语言理解和生成。它们具有深度语言理解能力、类似人类的文本生成能力、上下文意识和强大的问题解决技能,使它们在各个领域(例如搜索引擎、客户支持、翻译)中变得不可或缺。同时,LLMs也在安全领域获得了关注,揭示了安全漏洞并展示了它们在安全相关任务中的潜力。本文探讨了LLMs与安全性和隐私的交集。具体来说,我们研究了LLMs如何积极影响安全性和隐私,与它们使用相关的潜在风险和威胁,以及LLMs内部的固有漏洞。

CSPhD-winston的博客 1722

React Hooks 学习

React Hooks 学习 动机、解决了什么问题 State Hook 简单来说 组件分为三种、无状态组建可以通过function 编写、但是有了 hooks ,可以很轻易的写出带状态的组件 Effect Hook 可以让你在函数组件中执行一些具有effect(副作用)的操作;每次render之后都会执行effect相当于DidMonut 和 DidUpdate,如果需要对指定的参数进行监听,...

与你清欢 455

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

框架是否过度设计,这个问题其实我被问到很多次了。不仅仅是新手刚接触就觉得“过度设计”的评价,有些熟练的开发者也会有这种感觉。那么,这篇文章就来探究一下,为什么框架会让人感觉“过度设计”,以及框架如何设计,还有,如何让框架适应自己的节奏。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2118

react hooks学习

react Hooks API学习react Hooks前言一、useState的使用二、使用步骤1.引入库2.读入数据总结 前言 本文主要记录Hooks学习 一、useState的使用 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sn

顶峰相见的博客 395

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

React Hooks的深入学习

ReactHooks的出现,就标志着React不会存在无状态组件的情况,只有类组件和函数组件。

fish_skyyyy的博客 548

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

React Hooks - 学习/实践

1.应用场景 主要用于学习使用react hooks进行前端项目的开发. 2.学习/操作 1.文档阅读 http://www.ruanyifeng.com/blog/2019/09/react-hooks.html //React Hooks 入门教程 https://segmentfault.com/a/1190000019900931 //Hooks 与 React 生命周期的关系 视频: https://www.bilibili.com/...

"代码"的日常搬运 762

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

React学习笔记5:React Hooks概述

文章目录概述React的两套API类和函数的差异副效应(副作用)是什么?钩子(hook)出现的意义三大框架对比为什么学习hooks应用场景新版本特性解读Hook使用规则 概述 React的两套API 以前,React API 只有一套,现在有两套:类(class)API 和基于函数的钩子(hooks) API。 任何一个组件,可以用类来写,也可以用钩子来写。下面是类的写法。 class HelloReact extends React.Component { render() { return

HTZW的博客 489

React中Hooks的学习一些总结

react的hooks的学习

huihui_999的博客 954

react hooks学习总结

react hooks学习总结 react hooks优点 1:解决了class组件状态逻辑难以复用的问题 2:解决了class组件复杂难以维护的问题 生命周期函数中包含了很多不相干的逻辑,比如componentDidUpdate中只要一个字段发生变化都会触发,为了优化这种场景会写很多的优化逻辑; 类组件中到处都是对状态的访问和处理,导致组件难以拆分成更小的组件; 3:解决了类组件中this的问题...

yangjidaimin的专栏 509

React Hooks学习指北

自定义hooks是在基础上的一个拓展,可以根据业务需要制定满足业务需要的hooks,更注重的是逻辑单元。通过业务场景不同,我们到底需要做什么,怎么样把一段逻辑封装起来,做到复用,这是自定义hooks产生的初衷。hooks 专注的就是逻辑复用, 是我们的项目,不仅仅停留在组件复用的层面上。hooks让我们可以将一段通用的逻辑存封起来。将我们需要它的时候,开箱即用即可。

weixin_41086056的博客 1469

React学习-hooks

官方文档:https://zh-hans.react.dev/reference/react/useActionState。

beekim的博客 875

如何快速掌握React Hooks:初学者必备的终极学习指南

Hooks.Guide是一个由社区精心打造的React Hooks学习资源库,汇集了丰富的内置和第三方Hooks使用指南。无论你是刚入门React的新手,还是希望提升技能的开发者,这里都能为你提供简单易懂的Hooks学习方案,帮助你快速掌握React Hooks的核心用法和实战技巧。 ## 为什么选择Hooks.Guide学习React Hooks? React Hooks彻底改变了React

gitblog_00039的博客 301

React Hooks学习手册

ps: 本文预计对常用hook做进一步的分析,同时增加示例。首先从userState开始。 一个简单的Hook示例 Hooks是什么 Hook是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 一个简单的Hook示例 首先,这是一个传统的简单的有状态组件: class Example extends React....

机器虎的博客 636

React 学习笔记 - 使用React Hooks进行简单的表单封装

React 学习笔记 - 使用React Hooks进行简单的表单封装前言示例组件使用Form组件FormItem 组件Input 组件 前言 学完@我不是外星人的React进阶实践指南,了解了props的基本使用、隐式注入props、表单嵌套原理等。利用所学React Hooks知识对原文给出的demo进行了简单改动 希望通过这实践 demo 让大家学习到: props 基本使用 学会操作 props.children ,隐式注入 props 掌握表单嵌套原理(现实情况要比这个复杂) 示例 组件使用

绿胡子大叔的博客 1471

React学习七(React Hooks)

文章目录一、为什么会有Hooks 一、为什么会有Hooks &bbsp;&bbsp;&bbsp;&bbsp;&bbsp;&bbsp;React的组件创建方式,一种是类组件,一种是纯函数组件,并且React团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。也就是说组件的最佳写法应该是函数,而不是类。 纯函数组件有着类组件不具备的多种特点: ①纯函数组件没有状态 ②纯函数组件没有生命周期 ③纯函数组件没有this ...

qq_44872688的博客 1412
上一篇: react中使用less
下一篇: git 常规使用
qian____
博客等级 码龄7年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值