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

app下载网站免费营业推广经典案例

app下载网站免费,营业推广经典案例,北京装饰公司招聘信息,所谓网页制作三剑客不包括自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码 常见自定义hook例子: 封装一个简单的计数器 import {useS…

自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码

常见自定义hook例子:

封装一个简单的计数器
import {useState} from "react";function useCounter(initialValue:number){const [count, setCount] = useState(0)const increment = ()=>setCount(prev=>prev+1)const decrement = ()=>setCount(prev=>prev-1)const reset = ()=>setCount(initialValue)return {count,increment,decrement,reset}
}export default useCounter
封装一个自动监听网页窗口变化的hooks
import {useEffect, useState} from "react";function useWindowSize(){const [size, setSize] = useState({width:window.innerWidth,height:window.innerHeight})useEffect(() => {const handleResize = ()=>{setSize({width: window.innerWidth,height: window.innerHeight})}window.addEventListener("resize",handleResize)return ()=> window.removeEventListener("resize",handleResize)}, []);return size
}export default useWindowSize
封装一个网络请求的hooks,返回请求的状态
import {useEffect, useState} from "react";
import axios from "axios";interface FetchResult<T>{data:T | null,loading:boolean,error: Error | null
}
function useFetch<T = any>(url:string):FetchResult<T>{const [data, setData] = useState<T | null>(null)const [loading, setLoading] = useState(true)const [error, setError] = useState<Error | null>(null)useEffect(() => {const fetchData = async ()=>{try {const response = await axios.get(url)console.log(response)setData(response.data)} catch (e) {setError(e as Error)} finally {setLoading(false)}}fetchData()}, [url]);return {data,loading,error}}export default useFetch
hook设置获取localStorage
import {useState} from "react";function useLocalStorage<T>(key:string,initialValue:T | null){const [storeValue, setStoreValue] = useState(()=>{try {var item = window.localStorage.getItem(key);return item ? JSON.parse(item) : initialValue} catch (e) {console.log(e)return initialValue}})const setValue = (val:T | null)=>{try {setStoreValue(val)if (val){window.localStorage.setItem(key, JSON.stringify(val))}else{window.localStorage.removeItem(key)}} catch (e) {console.log(e)}}return [storeValue,setValue] as const}export default useLocalStorage

调用hook:

import useCounter from "./useCounter";
import useWindowSize from "./useWindowSize";
import useFetch from "./useFetch";
import useLocalStorage from "./useLocalStorage";function CustomHook(){const {count,increment,decrement,reset} = useCounter(10)const {width,height} =useWindowSize()const {data,loading,error} = useFetch("http://localhost:9090/hello")const [token,setToken] = useLocalStorage<String | null>("token",null)if (loading) return <div>loading ....</div>if (error) return  <div>error: {error.message}</div>return (<div><div> {width}</div><div> {height}</div>{count}<button onClick={increment}>increment</button><button onClick={decrement}>decrement</button>{data}<h3> token is :{token}</h3><button onClick={()=>setToken("123")}>123</button></div>)
}export default CustomHook
http://www.dtcms.com/wzjs/541730.html

相关文章:

  • 网站建设软件kan优秀网站开发
  • 九台网站医院线上预约
  • 个人备案网站描述wordpress 菜单加图标
  • sns社区网站开发烟台做网站哪家做的好
  • 各购物网站销售特点关于建设学校网站的报告书
  • discuz建站教程seo优化推广工程师招聘
  • 专注微信网站建设买卖信息网站
  • 成品网站灬1688湖北城乡住房建设厅网站
  • 松原市建设局网站投诉中心昌大建设怎么样
  • 戴南做网站对电子商务网站建设的感想
  • 上海有哪些优化网站推广公司织梦做的网站如何去掉index
  • 怎么仿照别人网站电商网站建设比较好的
  • 比较好的做简历的网站东莞市做网站的最好的是哪家的
  • 设计网站页面要多少钱wordpress 两个域名
  • destoon 网站搬家最新远程网站建设服务器
  • 做公众号必备的网站营销型网站建设吉林
  • 制作高端网站公司排名如何做网站用户活跃度
  • 周口网站建设公司菜鸟教程网站建设
  • 网站建设 网站制作 网站设计做外贸有免费的网站吗
  • 怎么申请公司注册济南网站优化推广公司
  • 新网站seo优化跨境电商千万别做亚马逊
  • 建站中企动力WordPress允许修改评论内容
  • 做网站设计最好的公司找网站建设
  • 阳江市住房和城乡建设局网站广州天河网站制作
  • 准备建网站该怎么做dz增加网站标签
  • php小型网站开发阿里云网站域名查询
  • 做网站编程的电脑配置重庆市建设工程信息网官网人
  • 眼科医院网站建设方案移动网站设计方案
  • 手机响应式网站建设公司电商新手入门知识
  • 在线购物的网站制作赣州网站优化推广