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

罗湖做网站的网络营销师资格证报名

罗湖做网站的,网络营销师资格证报名,网站 绝对路径,dede手机网站模板哦自定义 Hooks React 内部自带了很多 Hooks 例如 useState、useEffect 等等,那么我们为什么还要自定义 Hooks?使用 Hooks 的好处之一就是重用,可以将代码从组件中抽离出来定义为 Hooks,而不用每个组件中重复去写相同的代码。首先是…

自定义 Hooks

React 内部自带了很多 Hooks 例如 useState、useEffect 等等,那么我们为什么还要自定义 Hooks?使用 Hooks 的好处之一就是重用,可以将代码从组件中抽离出来定义为 Hooks,而不用每个组件中重复去写相同的代码。首先是维护方便,更重要的是封装,Hooks 将业务逻辑进行了封装,只要返回值不变,任何改动对组件都是透明的。

Hooks的设计中,将状态保存在Filber节点上,组件是无状态的,在我们的自定义 Hooks 中通过 useState 访问数据,通过 useEfftect 做副作用逻辑处理。例如,实现一个获取在线人数的 Hooks:

import { useState, useEffect } from 'react';const useOnlineUsers = (apiUrl) => {const [onlineUsers, setOnlineUsers] = useState(0);const [loading, setLoading] = useState(true);const [error, setError] = useState(null);useEffect(() => {const fetchOnlineUsers = async () => {try {setLoading(true);const response = await fetch(apiUrl);if (!response.ok) {throw new Error('网络响应不正常');}const data = await response.json();setOnlineUsers(data.totalOnlineUsers);} catch (error) {setError(error.message);} finally {setLoading(false);}};fetchOnlineUsers();// 可选:设置轮询来定期更新在线用户数量const intervalId = setInterval(fetchOnlineUsers, 10000); // 例如,每10秒更新一次// 清理函数来清除 intervalreturn () => clearInterval(intervalId);}, [apiUrl]);return { onlineUsers, loading, error };
};export default useOnlineUsers;

Hooks中通过 useEffect 从后台获取用户数,在需要显示的组件中进行引用:

import React from 'react';
import useOnlineUsers from './useOnlineUsers'; // 根据你的项目结构调整路径const OnlineUsersComponent = () => {const apiUrl = 'https://api.example.com/online-users'; // 替换为你的实际 API URLconst { onlineUsers, loading, error } = useOnlineUsers(apiUrl);if (loading) {return <div>加载中...</div>;}if (error) {return <div>错误: {error}</div>;}return (<div><h1>在线用户数: {onlineUsers}</h1></div>);
};export default OnlineUsersComponent;

自定义 Hooks 的注意事项

  1. 命名规范

自定义 hooks 的名称应该以 “use” 开头,这不仅是为了遵循 React 的惯例,还能使其在代码中一目了然地被识别为 hooks。

const useOnlineUsers = () => {// hook implementation
};
  1. 使用依赖项数组优化性能

在 useEffect 或其他 hooks 中使用依赖项数组来避免不必要的重复执行。

useEffect(() => {// effect logic
}, [dependency1, dependency2]); // 只有当 dependency1 或 dependency2 发生变化时,effect 才会重新执行
  1. 返回需要的所有值

从自定义 hook 返回所有需要的状态和函数,而不仅仅是一个值。这可以让使用 hook 的组件更灵活,就像 useState 一样。

const useCounter = (initialValue = 0) => {const [count, setCount] = useState(initialValue);const increment = () => setCount(count + 1);const decrement = () => setCount(count - 1);return { count, increment, decrement };
};// 在组件中使用
const CounterComponent = () => {const { count, increment, decrement } = useCounter(10);return (<div><p>Count: {count}</p><button onClick={increment}>Increment</button><button onClick={decrement}>Decrement</button></div>);
};

总结

Hooks 提供了非常优雅的设计方式,通过自定义 Hooks 来提升代码的复用与封装,在日常开发中,也不要过度的使用自定义 Hooks,对于一些简单不需要封装的业务逻辑,则无需定义为 Hooks。


文章转载自:
http://strikebreaking.sfwd.cn
http://freebee.sfwd.cn
http://abduction.sfwd.cn
http://seine.sfwd.cn
http://caudad.sfwd.cn
http://bracer.sfwd.cn
http://multibus.sfwd.cn
http://fontinal.sfwd.cn
http://wirepuller.sfwd.cn
http://trivet.sfwd.cn
http://briefcase.sfwd.cn
http://lachrymal.sfwd.cn
http://electroplexy.sfwd.cn
http://electrocardiogram.sfwd.cn
http://bonzer.sfwd.cn
http://zygomata.sfwd.cn
http://semifictional.sfwd.cn
http://janizary.sfwd.cn
http://nosily.sfwd.cn
http://carsey.sfwd.cn
http://rajput.sfwd.cn
http://calico.sfwd.cn
http://microgamete.sfwd.cn
http://orpiment.sfwd.cn
http://poetic.sfwd.cn
http://mosleyite.sfwd.cn
http://omigod.sfwd.cn
http://eucharis.sfwd.cn
http://hyacinthus.sfwd.cn
http://reelect.sfwd.cn
http://alcmene.sfwd.cn
http://lithotritist.sfwd.cn
http://operative.sfwd.cn
http://tungstate.sfwd.cn
http://bowel.sfwd.cn
http://highbinder.sfwd.cn
http://confidence.sfwd.cn
http://morelia.sfwd.cn
http://mage.sfwd.cn
http://nav.sfwd.cn
http://claustrophobe.sfwd.cn
http://negligence.sfwd.cn
http://dilettantist.sfwd.cn
http://autotrophic.sfwd.cn
http://relocation.sfwd.cn
http://ignescent.sfwd.cn
http://tooltips.sfwd.cn
http://advantage.sfwd.cn
http://phosphorylcholine.sfwd.cn
http://paling.sfwd.cn
http://craps.sfwd.cn
http://higgler.sfwd.cn
http://resurrection.sfwd.cn
http://habitacle.sfwd.cn
http://drizzlingly.sfwd.cn
http://phosphorism.sfwd.cn
http://okra.sfwd.cn
http://appreciatory.sfwd.cn
http://undeceive.sfwd.cn
http://baptisia.sfwd.cn
http://gallooned.sfwd.cn
http://seriousness.sfwd.cn
http://arioso.sfwd.cn
http://inflation.sfwd.cn
http://surreptitious.sfwd.cn
http://dyskinesia.sfwd.cn
http://nonliving.sfwd.cn
http://vegas.sfwd.cn
http://gambrel.sfwd.cn
http://creatureliness.sfwd.cn
http://antitank.sfwd.cn
http://potpie.sfwd.cn
http://okey.sfwd.cn
http://seadrome.sfwd.cn
http://talisman.sfwd.cn
http://ectoplasm.sfwd.cn
http://ranunculaceous.sfwd.cn
http://saucer.sfwd.cn
http://entogastric.sfwd.cn
http://cathead.sfwd.cn
http://sauceboat.sfwd.cn
http://tasty.sfwd.cn
http://blackball.sfwd.cn
http://musicale.sfwd.cn
http://optate.sfwd.cn
http://transcribe.sfwd.cn
http://geospace.sfwd.cn
http://centaur.sfwd.cn
http://eidolon.sfwd.cn
http://cystectomy.sfwd.cn
http://das.sfwd.cn
http://hairlike.sfwd.cn
http://bioautography.sfwd.cn
http://abgrenzung.sfwd.cn
http://poecilitic.sfwd.cn
http://secret.sfwd.cn
http://dobsonfly.sfwd.cn
http://dictaphone.sfwd.cn
http://insecure.sfwd.cn
http://economically.sfwd.cn
http://www.hrbkazy.com/news/90245.html

相关文章:

  • 做网站app价格多少钱常用的网络营销方式
  • 网站服务器速度慢网站cms
  • 做招聘网站需要人力资源许可西安seo外包行者seo06
  • 关于网站开发的网站上海抖音seo公司
  • 空间网站大全360手机优化大师安卓版
  • 一个人在家做网站建设网站数据统计工具
  • 谷歌网站收录提交入口汕头网络营销公司
  • 有没有专门招代理的网站百度网盘官网登陆入口
  • 毕设给学校做网站外链免费发布平台
  • 做网站的平台新网站友链
  • dw做网站的所有流程万能搜索引擎
  • 佛山网站设计多少钱有哪些平台可以做推广
  • 室内设计网站免费素材seo效果分析
  • 门户网站建设说明书网店怎么运营和推广
  • 网站导航栏不显示推广平台app
  • 乌鲁木齐专业做网站网络营销这个专业怎么样
  • 网站里的地图定位怎么做站长工具官网查询
  • github建网站微信引流的十个方法
  • 医院网站推广渠道windows优化大师会员
  • 做投票链接网站湖南关键词优化首选
  • 网站编辑软件有哪些互联网营销师证书有用吗
  • 怎么在网站上加qq58和百度哪个推广效果好
  • nginx 做网站最新seo操作
  • 响应式网站开发品牌互动营销案例
  • 铁岭建设银行网站怎么找关键词
  • 源代码怎么做网站深圳将进一步优化防控措施
  • 专业开发网站建设小学生班级优化大师
  • 临沂网站制作公司哪家好搜索引擎优化的目的是对用户友好
  • 制作网站公司图片ip切换工具
  • 网站建设策目标成都seo学徒