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

网站建设文案怎么设计国外html5网站模板

网站建设文案怎么设计,国外html5网站模板,网站制作公司起名,关于网站开发的请示文章目录 1. 副作用2.其他内置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定义hooks4. 第三方hooks5. hooks使用原则6. hooks闭包陷阱7. 总结结语 1. 副作用 当组件渲染完成时#xff0c;加载一个Ajax网络请求当某个state更新时#xff0c;加载一个Ajax网络… 文章目录 1. 副作用2.其他内置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定义hooks4. 第三方hooks5. hooks使用原则6. hooks闭包陷阱7. 总结结语 1. 副作用 当组件渲染完成时加载一个Ajax网络请求当某个state更新时加载一个Ajax网络请求 示例 const List2: FC () {console.log(加载Ajax网络请求。。。);... 控制台如下图所示 分析函数式组件任何state更新都会重新执行函数组件初次渲染也会执行函数。 解决这种情况通过如下其他hooks完成。 2.其他内置hooks 2.1 useEffect useEffect用法 解决“当组件渲染完成时加载一个Ajax网络请求”问题如下所示: useEffect(() {console.log(渲染完成);}, []); // 格式 useEffect(setup, dependencies?) useEffect(func, [])组件渲染完成执行一次。 参数分析 func函数 []依赖于…触发默认”空“当前组件。 useEffect执行只依赖于[]中指定的变量,可以是多个任一一个变量更新都触发函数执行。示例如下 useEffect(() {console.log(渲染完成);}, []);useEffect(() {console.log(questionList change);}, [questionList]);执行组件增、改、删打印questionList change 组件销毁时触发useEffect,QuestionCard.tsx如下 useEffect(() {console.log(QuestionCard mounted);return () {console.log(QuestionCard unmounted id);};}, []);控制台打印如下所示 useEffect监听react组件的声明周期创建、更新、销毁等。 useEffect组件执行创建-销毁-在创建原因从v18版本开始在开发环境下会执行该过程在生成环境中只执行一次。 yarn build 把打包好的文件放置在nginx配置的web路径下如下图所示 2.2 useRef 在 React 开发中开发者常常需要直接操作 DOM 元素或存储临时数据但 React 的状态管理机制如 useState有时无法满足这些需求。这时一个名为 useRef 的 Hook 就像一位灵活的“中间人”在虚拟 DOM 与真实 DOM 之间架起了一座桥梁。本文将深入探讨 useRef 的核心原理、使用场景及进阶技巧帮助开发者高效利用这一工具解决实际问题。 什么是 useRef useRef 是 React 提供的一个 Hook用于创建可变的引用reference其核心特性是 不会触发组件重渲染修改 useRef 的值不会导致组件重新渲染直接访问 DOM 元素通过 ref 属性绑定到 DOM 元素获取其真实引用存储临时数据适合保存不需要触发 UI 更新的临时变量。 示例 import { FC, useRef } from react;const Demo: FC () {const inputRef useRefHTMLInputElement(null);function selectInput() {const inputEle inputRef.current;inputEle inputEle.select();}return (divinput ref{inputRef} defaultValuehello world /button onClick{selectInput} 点击选中/button/div); };export default Demo;一般用于操作DOM也可传入普通JS变量单更新不会触发rerender 2.3useMemo 函数组件每次state更新都会重新执行函数useMemo可以缓存数据不用每次执行函数都重新生成可用于计算量较大的场景缓存提高性能 import { FC, useState, useMemo } from react; const Demo: FC () {console.log(demo...);const [num1, setNum1] useState(10);const [num2, setNum2] useState(20);const [text, setText] useState(hello);const sum useMemo(() {console.log(sum use memo );return num1 num2;}, [num1, num2]);return (p{sum} /pp{num1}buttononClick{() {setNum1(num1 1);}}add num1/button/pp{num2}buttononClick{() {setNum2(num2 1);}}add num2/button/pdivinput onChange{(e) setText(e.target.value)} value{text} //div/); };export default Demo;2.4 useCallback 和useMemo作用一样专门用于缓存函数 示例 import { FC, useState, useCallback } from react;const Demo: FC () {const [text, setText] useState(hello);const fn1 () console.log(fn1 text , text);const fn2 useCallback(() {console.log(fn2 text , text);}, [text]);return (divbutton onClick{fn1}fn1/buttonhr /button onClick{fn2}fn2/button/divdivinput onChange{(e) setText(e.target.value)} value{text} //div/); };export default Demo;缓存性能优化提示时间效率。 3.自定义hooks 内置hooks保证基础的功能内置hooks灵活配合实现业务功能抽离公共部分自定义hooks或者第三方hooks-复用代码 代码演示1修改网页标题 UseTitle.ts import { useEffect } from react;function useTitle(title: string) {useEffect(() {document.title title;}, []); }export default useTitle;App.tsx import useTitle from ./hooks/UseTitle;function App() {useTitle(自定义标题1);return (/); }export default App;代码演示2获取鼠标位置 useMouse.ts import { useState, useEffect } from react;// 获取鼠标位置自定义hooks function useMouse() {const [x, setX] useState(0);const [y, setY] useState(0);// 鼠标事件处理const mouseEventHandler (e: MouseEvent) {setX(e.clientX);setY(e.clientY);};useEffect(() {// 监听鼠标事件window.addEventListener(mousemove, mouseEventHandler);//组件销毁时一定要解绑DOM事件不解绑可能出现内存泄露问题return () {// 解绑鼠标事件与绑定时参数相同window.removeEventListener(mousemove, mouseEventHandler);};}, []);return { x, y }; }export default useMouse;App.tsx import useMouse from ./hooks/useMouse;function App() {const { x, y } useMouse();return (p鼠标位置{x} {y}/p/); }export default App;效果如下图所示 代码演示3模拟异步获取数据 useGetInfo.ts import { useState, useEffect } from react;// 异步获取信息 function getInfo(): Promisestring {return new Promise((resolve) {setTimeout(() {resolve(new Date().toString());}, 1500);}); }const useGetInfo () {const [loading, setLoading] useState(true);const [info, setInfo] useState();useEffect(() {getInfo().then((info) {setLoading(false);setInfo(info);});}, []);return { loading, info }; };export default useGetInfo;App.tsx import useGetInfo from ./hooks/useGetInfo;function App() {const { loading, info } useGetInfo();return (div{loading ? 加载中 : info}/div/); }export default App;效果如下图所示 4. 第三方hooks 常用第三方hooks文档地址参考下面链接2和链接3 ahooksreact-use 以ahooks为例演示修改网页标题 import { useTitle } from ahooks;function App() {useTitle(自定义标题2);return (/); }export default App;演示获取鼠标位置 import { useMouse } from ahooks;function App() {const { clientX, clientY } useMouse();return (p鼠标位置{clientX} {clientY}/p/); }export default App;5. hooks使用原则 使用useXxx格式命名只能在两个地方调用hook组件内其他hook内。必须保证每次的调用顺序一致不能放在if for内部 6. hooks闭包陷阱 当异步函数获取state时可能不是当前最新的state可以使用useRef解决 演示示例 Cloususe.tsx import { FC, useState, useRef, useEffect } from react;const Demo: FC () {const [count, setCount] useState(0);// 累加function add() {setCount(count 1);}// 打印countfunction printCount() {setTimeout(() {console.log(count);}, 2000);}return (p闭包陷阱/pdivp{count}/pbutton onClick{add}累加/buttonbutton onClick{printCount}打印/button/div/); };export default Demo;App.tsx import ClosureTrap from ./ClosureTrap;function App() {return (ClosureTrap //); }export default App;效果如下图所示 解决方案 Clousure.tsx import { FC, useState, useRef, useEffect } from react;const Demo: FC () {const [count, setCount] useState(0);const countRef useRef(0);useEffect(() {countRef.current count;}, [count]);// 累加function add() {setCount(count 1);}// 打印countfunction printCount() {setTimeout(() {console.log(countRef.current);}, 2000);}return (p闭包陷阱/pdivp{count}/pbutton onClick{add}累加/buttonbutton onClick{printCount}打印/button/div/); };export default Demo;效果如下图所示 7. 总结 目标 学会内置hooks学会自定义hooks学会使用第三方hooks 知识点 自定义hooks useState Immerstate的不可变数据 useEffect useRef useMemo useCallback 第三方hooks ahooks react-use 闭包陷阱 注意事项 hooks是React最重要的内容之一初学者很难通过概念理解hooks必须配合大量实践练习hooks有很多规则遇到错误时先看是否违反规则 结语 ❓QQ:806797785 ⭐️仓库地址https://gitee.com/gaogzhen ⭐️仓库地址https://github.com/gaogzhen [1]useEffect[CP/OL]. [2]ahook官网[CP/OL]. [3]github react-use[CP/OL].
http://www.zqtcl.cn/news/517462/

相关文章:

  • 中山网站建设工作修改wordpress后台地址
  • 西安app网站开发如何制作一个自己的网页
  • 陇西学做网站鄂州网约车
  • 做类似58类型网站免费源码分享
  • 个人做的网站有什么危险网站模板怎样发布
  • 设计建设网站公司网站wordpress k2
  • 公司网站被抄袭网络宣传
  • 企业网站设计收费专业网络推广公司排名
  • 视频网站模板源码深圳网站建设明细报价表
  • nike官方网站定制二级域名网站有哪些
  • 越秀移动网站建设房门户网站如何做优化
  • 什么软件可以做动漫视频网站开发一个小程序大概要多少钱
  • 微网站可以做成域名访问株洲网站做的好的公司
  • 建设网站去工信部备案需要什么资料网站建设相关博客
  • 十度网站建设网站建立的企业
  • 婚庆公司网站国外网站阻止国内访问怎么做
  • 乐山高端网站建设wordpress openload
  • 哪些网站上可以做租车深圳品牌网站开发
  • 乐清网站改版公司西安网站建设公司哪家好
  • 国外小型网站1688货源网下载
  • 浏览量最大的网站网站导航栏目设计内容依据
  • 户外拓展公司网站开发桂林网站开发
  • 怎么入侵网站后台互联网营销师含金量
  • 网站建设ningqueseo济南网站建设服务
  • 做网站给女朋友品牌网站建设只询大蝌蚪
  • 厦门服装商城网站建设米课做网站
  • ui做网站实例一起做网店网站官方
  • 网站建设合同怎么写wordpress如何设置404页面
  • wordpress 安装过程顺德网站优化
  • 大麦网网站建设的功能定位wordpress图片不被收录