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

上海正规网站定制新闻资讯平台有哪些

上海正规网站定制,新闻资讯平台有哪些,做3d效果图的网站有哪些,公司seo是什么意思目录 useEffect1. 替代生命周期方法2. 副作用管理3. 依赖项数组4. 多次使用5. 与闭包配合6. 支持异步操作7. 减少样板代码 注意事项useEffetct是如何拿到变量count最新的值#xff1f;1. 每次渲染都会创建新的函数作用域2. 闭包捕获最新的状态值3. useEffect 的执行时机 useLa… 目录 useEffect1. 替代生命周期方法2. 副作用管理3. 依赖项数组4. 多次使用5. 与闭包配合6. 支持异步操作7. 减少样板代码 注意事项useEffetct是如何拿到变量count最新的值1. 每次渲染都会创建新的函数作用域2. 闭包捕获最新的状态值3. useEffect 的执行时机 useLayoutEffect 与 useEffect1. useLayoutEffect2. useEffect createRef和useRef1. createRef2. useRef特性对比 useEffect useEffect 是 React 中的一个 Hook用于在函数组件中处理副作用操作例如数据获取、订阅事件、手动修改 DOM 等。以下是 useEffect 的一些主要特性和优点 1. 替代生命周期方法 模拟类组件的生命周期useEffect 可以模拟类组件的 componentDidMount、componentDidUpdate 和 componentWillUnmount 方法允许在组件的不同阶段执行相应的逻辑。 useEffect(() {// componentDidMount 和 componentDidUpdate 的逻辑return () {// componentWillUnmount 的逻辑}; }, [dependencies]);2. 副作用管理 处理副作用useEffect 在组件渲染后执行用于处理需要在渲染后发生的副作用例如更新 DOM、设置订阅、发送网络请求等。 清理副作用 a. 组件卸载时Unmount当组件从界面上被移除时React 会调用 useEffect 返回的清除函数。这确保了任何与该组件相关的订阅、计时器或其他副作用在组件不再存在时被正确清理。 b. 在重新执行 effect 之前如果 useEffect 的依赖项数组中的某个值发生了变化React 会在重新执行 effect 之前调用上一次 effect 的清除函数。这避免了副作用的累积并确保每次 effect 执行前的环境是干净的。 useEffect(() {const subscription someService.subscribe();return () {subscription.unsubscribe();}; }, []);3. 依赖项数组 精确控制 effect 执行时机依赖项数组 [dependencies] 允许你指定 effect 何时重新执行。只有当数组中的依赖项发生变化时effect 才会被触发。空数组的话只执行一次相当于componentDidMount 避免不必要的更新通过正确设置依赖项数组可以避免不必要的 effect 执行提高组件性能。 useEffect(() {// 仅当 count 变化时执行 }, [count]);4. 多次使用 拆分逻辑可以在同一个组件中多次使用 useEffect每个 effect 钩子可以处理不同的副作用逻辑保持代码清晰。 useEffect(() {// 处理订阅逻辑 }, []);useEffect(() {// 处理数据获取逻辑 }, [dataId]);5. 与闭包配合 访问最新的 state 和 propsuseEffect 内部的函数会捕获到当前渲染周期的 state 和 props确保副作用操作基于最新的数据。 6. 支持异步操作 处理异步任务useEffect 可以轻松处理异步操作如数据获取和定时器。 useEffect(() {async function fetchData() {const result await axios.get(/api/data);setData(result.data);}fetchData(); }, []);7. 减少样板代码 简化代码结构相比于类组件的生命周期方法useEffect 在函数组件中使用更加简洁减少了样板代码使代码更易读。 优点总结 简洁性使函数组件能够方便地管理副作用减少了对类组件的依赖。 可读性通过拆分不同的 useEffect逻辑更清晰代码更易于维护。 性能优化通过依赖项数组避免了不必要的副作用执行提高了应用性能。 一致性提供了统一的方式来处理组件的副作用减少了认知负担。 注意事项 正确使用依赖项数组确保在依赖项数组中包含所有在 effect 中使用的外部变量防止因为闭包导致的状态不一致问题。避免无限循环如果不慎遗漏依赖项或者依赖项数组变化过于频繁可能导致 effect 无限执行造成性能问题。清理函数的重要性对于订阅、计时器等副作用一定要在清理函数中进行清理防止内存泄漏。 示例代码 import React, { useState, useEffect } from react;function ChatRoom({ roomId }) {const [messages, setMessages] useState([]);useEffect(() {// 订阅聊天信息const subscription ChatAPI.subscribeToRoom(roomId, (newMessage) {setMessages((prevMessages) [...prevMessages, newMessage]);});// 清理函数取消订阅return () {ChatAPI.unsubscribeFromRoom(roomId, subscription);};}, [roomId]); // 当 roomId 变化时重新订阅return (div{messages.map((message) (p key{message.id}{message.content}/p))}/div); }在上述示例中 使用了 useEffect 来订阅和取消订阅聊天信息。 依赖项数组 [roomId] 确保当房间 ID 变化时重新执行 effect。 返回的清理函数确保在组件卸载或 roomId 变化时取消之前的订阅。 useEffetct是如何拿到变量count最新的值 示例 function Counter() { const [count, setCount] useState(0); useEffect(() { document.title You clicked ${count} times; }); return ( div pYou clicked {count} times/p button onClick{() setCount(count 1)} Click me /button /div ); } useEffect 中的函数能够读取到最新的 count 状态值主要是由于 JavaScript 中的闭包机制和 React 函数组件的渲染逻辑。 1. 每次渲染都会创建新的函数作用域 新的渲染上下文在 React 中每当组件的状态或属性发生变化时组件都会重新渲染。对于函数组件来说这意味着组件函数会被重新执行生成新的渲染结果。 新的变量和函数每次渲染都会创建新的作用域其中的变量如 count和函数如传递给 useEffect 的函数都是新的。 2. 闭包捕获最新的状态值 闭包机制JavaScript 中函数会捕获其外部作用域中使用的变量。这意味着在每次渲染时useEffect 中的函数都会捕获到当次渲染时的 count 值。 最新的 count 值由于 count 是在组件函数执行时定义的每次渲染都会得到最新的状态值。useEffect 中的函数在被调用时使用的就是这个最新的 count 值。 3. useEffect 的执行时机 在渲染后执行useEffect 中的函数会在组件渲染到屏幕后执行。即使它在渲染期间定义但执行是在 DOM 更新之后。 每次渲染后执行在您的示例中由于没有指定依赖项数组useEffect 会在每次渲染后执行因此每次都会使用最新的 count 值。 综合解释 函数组件的特性函数组件在每次渲染时都会重新执行函数体生成新的 count、setCount以及新的 useEffect 中的函数。闭包捕获useEffect 中的函数在定义时捕获了当次渲染的 count 值。当 effect 被执行时它使用的就是这个捕获的值。最新的状态值由于每次渲染都会生成新的 countuseEffect 中的函数总是能够获取到最新的 count 值。 useLayoutEffect 与 useEffect 1. useLayoutEffect 在浏览器完成布局和绘制之前同步执行。 适用于需要读取布局信息并同步修改 DOM 的场景。 会阻塞浏览器绘制影响性能谨慎使用。 2. useEffect 在浏览器绘制之后异步执行。 不会阻塞渲染更常用。 示例场景 使用 useLayoutEffect测量 DOM 元素的尺寸或位置然后立即修改布局。 createRef和useRef 1. createRef 创建方式React.createRef()。 适用于主要在 类组件Class Components 中使用。 示例 import React from react;class MyComponent extends React.Component {constructor(props) {super(props);this.myRef React.createRef();}componentDidMount() {// 通过 this.myRef.current 访问 DOM 元素或子组件实例console.log(this.myRef.current);}render() {return div ref{this.myRef}Hello World/div;} }每次调用 createRef() 都会返回一个新的 Ref 对象。这意味着如果在函数组件中使用 createRef每次渲染都会创建一个新的 Ref而不是持久化的。 适用于类组件在类组件的构造函数中创建一次 Ref并在整个组件生命周期中保持一致。 2. useRef 创建方式const refContainer useRef(initialValue)。 适用于函数组件Function Components因为它是一个 Hook。 示例 import React, { useRef, useEffect } from react;function MyComponent() {const myRef useRef(null);useEffect(() {// 通过 myRef.current 访问 DOM 元素或保存任何可变值console.log(myRef.current);}, []);return div ref{myRef}Hello World/div; }useRef 返回的 Ref 对象在整个组件生命周期中是持久的。无论组件如何重新渲染useRef 返回的对象始终指向同一个引用。 不仅可以用于获取 DOM 元素还可以用于保存任意可变值类似于在类组件中使用实例属性。 不会在组件重新渲染时重新初始化。 特性对比 特性createRefuseRef适用组件类型类组件Class Components函数组件Function Components调用时机通常在构造函数中调用一次在函数组件内的任意位置遵循 Hook 规则每次渲染是否创建新 Ref是每次调用都会创建新的 Ref 对象否useRef 返回的对象在整个生命周期中保持不变用途获取 DOM 元素或子组件实例获取 DOM 元素、保存可变值、存储任何可变数据可持久化的可变值否主要用于引用 DOM 或组件实例是可用于存储任意可变值不会触发重新渲染
http://www.ho-use.cn/article/10819554.html

相关文章:

  • 网站建设相关行业有哪些wordpress page模版
  • 长沙建站智能模板课程网站开发与设计
  • vip网站怎么做百度搜索风云榜手机版
  • 外语网站开发wordpress去除category
  • 镇海网站建设wordpress 图片cms主题
  • 网站建设用哪个好动漫制作专业软件有哪些
  • 广州网站建设那家好塘厦初级中学
  • 开发区网站建设工作职责有哪些免费做电子名片的网站
  • 以下属于网站的管理 更新 维护软件网站建设的目的
  • 珠海定制网站建设推广沈阳做网站优化
  • 商城网站建设建站系统网站用户体验分析怎么做
  • 金华建站模板中铁建设集团集网登录
  • 贵港网站开发深圳市中心
  • 电子商务网站系统建设实训心得建设培训网站建设
  • 怎么做PayPal网站收款wordpress 谷歌加速
  • 网站建设设计书任务书做网站公司实力排名
  • 网站开发系统规划湘潭做网站口碑好磐石网络
  • 中文wordpress实例东莞网站优化案例
  • 网站改版的方式品古典家具网站模板
  • 高端网站制作模板开源外贸网站
  • php做网站用什么开发工具暂时关闭wordpress插件
  • 网站备案的时候可以做网站吗wordpress字段管理
  • 自己做的网站怎么置顶微信小程序怎么做扫码下单
  • 索菲亚全屋定制官方网站数据分析和网站开发
  • 有网页源码怎么做网站seo综合查询工具下载
  • 企业自建服务器网站建设流程公司网站运营方案策划
  • 杭州建设网站公司哪家好专业网站的特点
  • 深圳专业网站建设公司哪家好erp系统定制
  • 网站素材下载wordpress 装主题
  • 网站设计上海企业文化设计