React响应式数据useState

React响应式数据useState

最近学了React,发现与Vue大有不同,在Vue中实现数据的响应式通过ref()函数,React则是通过useState()函数

使用

语法:const [data, setData] = useState(数据)

说明:将数据传给useState(),返回一个数组,第一个元素为最新数据,第二个参数为修改数据的方法

注意:实现响应式就是通过setData方法来实现的,即每次通过setData修改数据后,data就会自动拿到最新数据,用到data的地方将会重新渲染。若是直接修改data是不会触发响应式变化的!

案例:

import {useState} from "react";

export function ShowOrHideMatrix() {
   //	定义状态
   const [showStatus, setShowStatus] = useState(true)
   const Matrix = function () {
       //	使用状态
       return (showStatus && <div style={{width: '100px', height: '100px',backgroundColor: 'green'}}></div>)
   }
   const Button = function () {
       //	通过setXxx方法修改状态
       return (<button onClick={() => setShowStatus(!showStatus)}>{showStatus ? '隐藏' : '显示'}方块</button>)
   }
   return (<div> <Matrix/> <Button/> </div>)
}
React响应式原理是指React通过使用虚拟DOM和diff算法来实现组件的高效更新。当组件的状态或属性发生变化时,React会根据新的状态和属性生成一个新的虚拟DOM树,并使用diff算法比较新旧虚拟DOM树的差异。然后,React会根据差异来更新真实的DOM树,只更新需要变化的部分,从而实现性能优化。 在React中,通过使用useStateuseEffect等Hook函数,我们可以实现数据响应式useState用于声明一个状态变量,并返回一个数组,数组的第一个元素是当前的状态值,第二个元素是一个函数,用于更新状态值。当状态值发生变化时,React会自动重新渲染组件。 而useEffect用于处理副作用操作,比如数据获取、订阅事件等。useEffect接收一个回调函数作为参数,在组件渲染完成后执行回调函数,并且可以返回一个清除函数,在组件被销毁时执行清除操作。这样可以确保副作用的正确执行和清除,避免内存泄漏和其他问题。 总的来说,React响应式原理通过虚拟DOM和diff算法实现高效的组件更新,同时使用useStateuseEffect等Hook函数来实现数据响应式和处理副作用操作。这样可以使React组件的开发更加高效和易于维护。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue 3 最详细的Reactivity 数据响应式原理解析](https://blog.csdn.net/weixin_40906515/article/details/117309093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [字节青训前端笔记 | 响应式系统与 React](https://blog.csdn.net/weixin_46463785/article/details/128742579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值