React监听窗口宽度变化 触发resize(Hooks版本)

需求场景:

项目中有些样式,需要监听窗口大小更改,做一些自适应处理

Code:

javascript 复制代码
    const [screenW, setScreenW] = useState(document.documentElement.clientWidth || document.body.clientWidth)

	// 一些用到的需要自适应的变量
    const middleWidth = useMemo(() => {
        if (screenW < 1200) {
            return screenW - 64
        } else {
            return screenW - 256
        }
    }, [screenW])

    useEffect(() => {
        window.addEventListener("resize", handleWindowResize)
        return () => {
            window.removeEventListener("resize", handleWindowResize)
        }
    }, [])

    const handleWindowResize = () => {
        setScreenW(document.documentElement.clientWidth || document.body.clientWidth)
    }
相关推荐
决斗小饼干18 分钟前
低代码平台工作流引擎设计:从状态机到智能流转的技术演进
前端·低代码·工作流引擎
豆苗学前端24 分钟前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
米丘31 分钟前
了解 window.history 和 window.location, 更好地掌握 vue-router、react-router单页面路由
前端
swipe34 分钟前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试
星_离1 小时前
《Vue 自定义指令注册技巧:从手动到自动,效率翻倍》
前端·vue.js
狗头大军之江苏分军1 小时前
消耗 760万 Token 后,一文看懂了“小龙虾” OpenClaw 和 OpenCode 的区别
前端·后端
毛骗导演1 小时前
万字解析 OpenClaw 源码架构-安全与权限
前端·架构
哇哇哇哇1 小时前
vue3 ref解析
前端
哇哇哇哇1 小时前
vue3 reactive解析
前端
光影少年1 小时前
Vue的响应式原理?Vue2和Vue3有什么区别?
前端·vue.js·掘金·金石计划