import React, { useRef ,useState ,useEffect ,useCallback } from 'react';
function useWinSize(){
const [size,setSize] = useState({
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
})
const onResize = useCallback(()=>{
setSize({
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
})
},[])
useEffect(()=>{
window.addEventListener('resize',onResize)
return ()=>{
window.removeEventListener('resize',onResize)
}
},[])
return size;
}
const usePrevious = state =>{
const ref = useRef();
useEffect(()=>{
ref.current = state;
})
return ref.current;
}
function App(){
const [count,setCount] = useState(0);
const size = useWinSize();
const prevCount = usePrevious(count);
return (
<div>
页面Size:{size.width}x{size.height}
<button onClick={()=>setCount(count+1)}>+</button>
<button onClick={()=>setCount(count-1)}>-</button>
<p>Now:{count},before:{prevCount}</p>
</div>
)
}
export default App