由于重复业务。需要抽取一些通用的业务组件
举两个栗子
基础款:
import React,{useEffect,useState} from 'react'
const useMouseTrack=()=>{
const [postion, setpostion] = useState({x:0,y:0})
useEffect(()=>{
const hear=(e:MouseEvent)=>{
console.log(1)
setpostion({x:e.clientX,y:e.clientY})
}
document.addEventListener('mousemove',hear)
return()=>{
document.removeEventListener('mousemove',hear)
}
},[])
return postion
}
export default useMouseTrack
在app.js文件里引用并使用
升级款:
import React,{useEffect,useState} from 'react'
import axios from 'axios'
const useUrlLoader=(url:string,desp:any[]=[])=>{
const [data,setData]=useState<any>(null)
const [loading,setLoading]=useState(false)
useEffect(()=>{
setLoading(true)
axios.get(url).then(res=>{
setData(res)
setLoading(false)
})
},desp)
return [data,loading]
}
export default useUrlLoader