当前位置: 首页 > news >正文

react中useState、useRef、变量之间的区别

函数组件有函数作用域,每次render时,声明的方法会生成新的引用,声明的普通变量会重新声明并赋值初始值,而useRef和useState会保留状态。

useState、useRef、变量的区别
1. useState
组件更新不会改变之前的状态,可以保存状态。值变化,会render,视图会更新,setState是异步的,同一个函数内设置的,不能实时获取到最新的值。

const [state, setState] = useState(0)
const fn = () => {setState(1)console.log(state) //输出0
}



使用场景: 当我们需要在状态改变的时候重新渲染视图,那么我们就使用 useState 来保存我们的状态

2. useRef保存的值
组件更新不会改变之前的状态,可以保存状态。值变化,不会render,视图不会更新。设置的值是同步的,同一个函数内设置的,能实时获取到最新的值。

const num = useRef(0)
const fn = () => {num.current = 1console.log(num.current) //输出1
}


使用场景: 如果我们只是想保存状态不影响视图更新,而且可以同步更新&获取我们的状态,那么就使用 useRef。
注意事项:

ref.current 不可以作为其他 hooks(useMemo, useCallback, useEffect)依赖项;
ref.current 的值发生变更并不会造成 re-render, Reactjs 并不会跟踪 ref.current 的变化。
3. 变量(组件内)
变量在每次组件重新渲染的时候都会被重新进行赋值为初始值,所以如果你想要保留之前操作的状态的话就不要使用变量。
使用场景: 建议组件内不使用

3. 变量(组件外)
组件外定义的 global 变量,是属于全局的。如果代码中有多个相同的组件,那这个 global 变量在全局是同一个,他们会互相影响。
 

参考:react中useState、useRef、变量之间的区别_useref和usestate区别-CSDN博客

http://www.lryc.cn/news/249725.html

相关文章:

  • 企业软件的分类|app小程序网站定制开发
  • Flink(八)【窗口】
  • 云轴科技ZStack信创云平台助力国泰君安期货实现信创改造
  • C语言猜数字小游戏
  • 自定义BeanPostProcessor之XssBeanPostProcessor
  • 如何使用Windows自带的IIS服务搭建本地站点并远程访问
  • 【微软技术栈】基于任务的异步编程
  • react hooks 学习之react router v6 路由表配置
  • Echarts 设置数据条颜色 宽度
  • 2023-11-30 通过中缀表达式转换后缀表达式, 用C语言完成一个简单的计算器
  • 设计模式总目录
  • 通俗理解词向量模型,预训练模型,Transfomer,Bert和GPT的发展脉络和如何实践
  • 键入网址到网页显示,期间发生了什么?(计算机网络)
  • python-GC机制、装饰器、生成器、迭代器、三元表达式、列表生成式、生成器表达式、函数递归、面向对象、
  • Linux命令--根据端口号查看进程号(PID)
  • LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  • 使用 Vue3 + Pinia + Ant Design Vue3 搭建后台管理系统
  • SpringCloud核心组件
  • 基于C++11实现将IP地址、端口号和连接状态写入文件
  • 非空断言,
  • Spark---创建DataFrame的方式
  • 瑜伽学习零基础入门,各种瑜伽教学方法全集
  • pycharm编译报错处理
  • “华为杯”研究生数学建模竞赛2019年-【华为杯】E题:基于多变量的全球气候与极端天气模型的构建与应用(附python代码实现)
  • 冒泡排序(适合编程新手的体质)
  • pdfjs,pdf懒加载
  • K8s 多租户方案的挑战与价值
  • 单链表相关经典算法OJ题:移除链表元素
  • 【JUC】十九、volatile与内存屏障
  • 下载MySQL JDBC驱动的方法