React-Hooks之useState

简介: React-Hooks之useState

今天是值得开心的事情,终于学到hooks啦,今天学了两个hook,只能说相见恨晚,感觉自己之前学context和redux都白学了,用起来还麻烦,呜呜

难怪之前一个友友疯狂推荐hooks,今天终于见证其简易性啦,爱了爱了


47.png

48.png


1.什么是Hook?
  • Hook 是 React 16.8 的新增特性,它可以让函数式组件拥有类组件特性
2.为什么需要Hook?
  • 在Hook出现之前, 如果我们想在组件中保存自己的状态,如果我们想在组件的某个生命周期中做一些事情, 那么我们必须使用类组件
  • 但是类组件的学习成本是比较高的, 你必须懂得ES6的class, 你必须懂得箭头函数
  • 但是在类组件的同一个生命周期方法中, 我们可能会编写很多不同的业务逻辑代码;这样就导致了大量不同的业务逻辑代码混杂到一个方法中, 导致代码变得很难以维护
    诸如:在组件被挂载的生命周期中, 可能主要注册监听, 可能需要发送网络请求等
  • 但是在类组件中共享数据是非常繁琐的, 需要借助Context或者Redux
  • 所以当应用程序变得复杂时, 类组件就会变得非常复杂, 非常难以维护所以Hook就是为了解决以上问题而生的
3.如何使用Hook?
  • Hook的使用我们无需额外安装任何第三方库, 因为它就是React的一部分
  • Hook只能在函数组件中使用, 不能在类组件,或者函数组件之外的地方使用
  • Hook只能在函数最外层调用, 不要在循环、条件判断或者子函数中调用
    官方文档地址: https://react.docschina.org/docs/hooks-intro.html

function Home() {
    // 只能在函数体的最外层使用
    // 只能在这个地方使用Hook
    if(){
        // 不能使用Hook
    }
    while (){
        // 不能使用Hook
    }
    for(){
        // 不能使用Hook
    }
    switch () {
        // 不能使用Hook
    }
    function demo() {
        // 不能使用Hook
    }
}

hooks01 - useState

1.什么是Hook?

Hook就是一个特殊的函数

2.什么是useState Hook?

可以让函数式组件保存自己状态的函数

3.useState Hook如何使用?

Hook只能在函数式组件中使用, 并且只能在函数体的最外层使用

useState:

参数: 保证状态的初始值

返回值: 是一个数组, 这个数组中有两个元素

第一个元素: 保存的状态

第二个元素: 修改保存状态的方法

import React, {useState} from 'react';
function App() {
  const [nameState, setNameState]  = useState("小单小单小单在这里呀")
  const [ageState, setAgeState] = useState(18);
  const [studentState, setStudentState] = useState({name:'zs', age:23});
  const [heroState, setHeroState] = useState([
        {id: 1, name:'鲁班'},
        {id: 1, name:'虞姬'},
        {id: 1, name:'黄忠'},
    ]);
    return (
        <div>
            <p>{ageState}</p>
            <button onClick={()=>{setAgeState(ageState + 1)}}>增加</button>
            <button onClick={()=>{setAgeState(ageState - 1)}}>减少</button>
            <hr/>
            <p>{nameState}</p>
            <button onClick={()=>{setNameState('it666')}}>修改</button>
            <hr/>
            <p>{studentState.name}</p>
            <p>{studentState.age}</p>
            <hr/>
            <ul>{
                heroState.map((hero)=>{
                    return <li>{hero.name}</li>
                })
            }</ul>
        </div>
    )
}
export default App;

useState 注意点:和类组件中的setState一样,是异步调用,因此在某些情况下连续调用会产生“合并现象”

解决办法和state一样,修改保存状态的方法能够接收上次返回的数据,那么可以在这个基础上进行操纵即相当于同步操作,此时可以避免合并现象

function incrementAge() {
        // setAgeState(ageState + 10);
        // setAgeState(ageState + 10);
        // setAgeState(ageState + 10);
//会发生合并现象
        setAgeState((preAgeState)=>preAgeState + 10);
        setAgeState((preAgeState)=>preAgeState + 10);
        setAgeState((preAgeState)=>preAgeState + 10);
    }

完结撒花✿✿ヽ(°▽°)ノ✿,开心复习专业课,练练口语准备睡觉觉


目录
相关文章
|
2月前
|
前端开发 JavaScript
深入理解并实践React Hooks —— useEffect与useState
深入理解并实践React Hooks —— useEffect与useState
143 1
|
10天前
|
前端开发 JavaScript
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
|
1月前
|
存储 前端开发 JavaScript
React useState 和 useRef 的区别
本文介绍了 React 中 `useState` 和 `useRef` 这两个重要 Hook 的区别和使用场景。`useState` 用于管理状态并在状态变化时重新渲染组件,适用于表单输入、显示/隐藏组件、动态样式等场景。`useRef` 则用于在渲染之间保持可变值而不触发重新渲染,适用于访问 DOM 元素、存储定时器 ID 等场景。文章还提供了具体的代码示例,帮助读者更好地理解和应用这两个 Hook。
40 0
|
2月前
|
前端开发
React中函数式Hooks之useState的使用
本文介绍了React中函数式组件的Hooks——`useState`的使用方法。`useState`允许在函数式组件中使用状态,它返回一个数组,其中包含当前状态的值和更新该状态的函数。文章通过示例代码展示了如何声明状态变量和更新状态变量,包括对数值和对象状态的更新。此外,还展示了如何通过点击按钮触发状态更新,实现交互功能。
39 1
|
3月前
|
前端开发 开发者
介绍React的useState
【8月更文挑战第6天】 介绍React的useState
40 1
|
4月前
|
存储 前端开发 安全
|
4月前
|
前端开发 JavaScript 数据格式
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
react18【系列实用教程】Hooks (useState,useReducer,useRef,useEffect,useContext,useMemo,useCallback,自定义 Hook )
93 1
|
4月前
|
前端开发
react18【系列实用教程】Hooks 闭包陷阱 (2024最新版)含useState 闭包陷阱,useEffect 闭包陷阱,useCallback 闭包陷阱
react18【系列实用教程】Hooks 闭包陷阱 (2024最新版)含useState 闭包陷阱,useEffect 闭包陷阱,useCallback 闭包陷阱
75 0
|
4月前
react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)
react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)
60 0
|
4月前
|
前端开发 JavaScript
react18【系列实用教程】useState —— 声明响应式变量(2024最新版)含useState 的异步更新机制,更新的合并,函数传参获取更新值,不同版本异步更新差异,更新对象和数组
react18【系列实用教程】useState —— 声明响应式变量(2024最新版)含useState 的异步更新机制,更新的合并,函数传参获取更新值,不同版本异步更新差异,更新对象和数组
244 0