首页 > 其他分享 >hook函数——react——同步获取useState的最新状态值

hook函数——react——同步获取useState的最新状态值

时间:2022-10-01 21:35:08浏览次数:51  
标签:count React 函数 react hook useState 组件


简介

在 React 的世界中,有容器组件和 UI 组件之分,在 React Hooks 出现之前,UI 组件我们可以使用函数组件,无状态组件来展示 UI,而对于容器组件,函数组件就显得无能为力,我们依赖于类组件来获取数据,处理数据,并向下传递参数给 UI 组件进行渲染。React在v16.8 的版本中推出了 React Hooks 新特性,Hook是一套工具函数的集合,它增强了函数组件的功能,hook不等于函数组件,所有的hook函数都是以use开头。


使用 React Hooks 相比于从前的类组件有以下几点好处:

  • 代码可读性更强,原本同一块功能的代码逻辑被拆分在了不同的生命周期函数中,容易使开发者修改代码时不易去查找,通过 React Hooks 可以将功能代码聚合,方便维护
  • 组件树层级变浅,在原本的代码中,我们经常使用 HOC/render/Props 等方式来复用组件的状态,增强功能等,无疑增加了组件树层数及渲染,而在 React Hooks 中,这些功能都可以通过强大的自定义的 Hooks 来实现

使用hook限制

  • hook只能用在函数组件中,class组件不行
  • 普通函数不能使用hook,默认只能是函数组件才能用
  • 例外:普通函数名称以use开头也可以,(自定义的函数以use开头,称为自定义hook)
  • 函数组件内部的函数也不能使用hook
  • hook函数一定要放在函数组件的第一层,别放在if/for中(块级作用域)
  • 要求函数组件名称必须首字母大写

useState

保存组件状态,功能类似于类组件中的this.state状态管理


定义函数组件rcf
函数组件中,从react16.8之后,提供一个hook函数 useState方法,它可以模拟出状态

  • 语法——值的存储使用了闭包
  • ​let [变量,函数] = useState(值|()=>值)​
  • 变量就可以得到useState中的值,函数就可以修改值
import React from 'react';

const App = () => {
return (
<div>

</div>
);
}
export default App;

相当于在App函数组件是定义一个state数据,变量名为 count,修改此count的值的方法为setCount

const App = () => {
// let[count ,setCount] = useState(100)
let[count,setCount] = useState(()=>100)
let[count1,setCount1] = useState(()=>200)
const add = ()=>{
setCount(count+1)
}
const add1 = ()=>{
setCount1(count1+1)
}
return (
<div>
<h1>{count}</h1>
<h1>{count1}</h1>
<button onClick={add}>add</button>
<button onClick={add1}>add1</button>
</div>
);
}

export default App;

hook函数——react——同步获取useState的最新状态值_自定义


标签:count,React,函数,react,hook,useState,组件
From: https://blog.51cto.com/u_15808854/5728446

相关文章

  • 问:React的setState为什么是异步的?
    前言不知道大家有没有过这个疑问,React中setState()为什么是异步的?我一度认为setState()是同步的,知道它是异步的之后很是困惑,甚至期待React能出一个setStateSync()......
  • gitlab的webhook与jenkins搭配方式
    常用的有两种,如下图  1,身份验证令牌: 令牌可以随意写,哪怕12345678都行,然后在gitlab进行配置。一种是在管理中心配置,一种是在项目对应的设置选项里面设置,都是可以实现......
  • React面试:谈谈虚拟DOM,Diff算法与Key机制
    1.虚拟dom原生的JSDOM操作非常消耗性能,而React把真实原生JSDOM转换成了JavaScript对象。这就是虚拟Dom(VirtualDom)每次数据更新后,重新计算虚拟Dom,并和上一次生成的虚拟......
  • Orchestrator中的hooks函数
    目录hooks分类hooks的执行Orchestrator中有很多hooks函数,用于调用外部服务做一些配置或者准备等工作。hooks分类Orchestrator中主要有以下这些hooks,按照其执行顺序依次......
  • 如何在 React 中构建一个简单的进度条
    如何在React中构建一个简单的进度条进度条是一个简单但功能强大的UI元素。上周,我为一个无债务计算器项目创建了自己的项目,并意识到我有多么认为它们是理所当然的。当......
  • 将 react-beautiful-dnd 与 Next.js 和 TypeScript 一起使用
    将react-beautiful-dnd与Next.js和TypeScript一起使用Next.js+TS+react-beautiful-dnd介绍反应美丽的dnd是专门为列表(垂直、水平、列表之间的移动、嵌套......
  • Vue3 + React18 + TS4 入门到实战
    前端项目开发,基本绕不开Vue+TS或React+TS,因此,这已经成为前端开发工程师日常需掌握的三大热门技术。本课程针对真正的初级前端同学而设,带大家系统地掌握3者目前新版......
  • react项目配置Eslint
    ReactOrTaro项目配置Eslint校验一、下载Eslint相关deps依赖项;npminstall--save-deveslint-plugin-prettiereslint-plugin-jsx-a11yeslint-config-airbnb注......
  • useState"失效“问题解释和解决方案
    示例:const[count,setCount]=useState(0)简单的onclick事件中,setCount(1)后紧接着输出或者使用,则输出的值还是0原因:setState会导致页面刷新,(useRef不会)页面刷新的时候......
  • 面试官让你说说react状态管理?
    开发者普遍认为状态是组件的一部分,但是同时却又在剥离状态上不停的造轮子,这不是很矛盾么?对于一个最简单的文本组件而言functionText(){const[text,setText]=......