动态获取浏览器窗口宽高

该博客展示了如何在React应用中使用自定义hook `useWinSize` 实现监听浏览器窗口大小变化,并实时更新页面显示窗口的宽度和高度。通过订阅`resize`事件并优化清理,确保组件卸载时事件移除,实现性能优化。
摘要由CSDN通过智能技术生成

实现一个resize拖拽浏览器窗口,实时显示浏览器窗口大小宽高
上代码

import React,{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
	
}
//UI

function   App9(){
	const  size=useWinSize()
	return(
		<div>页面size:{size.width},{size.height}</div>
	)
	
}

export default App9;

效果图
image.png

### 回答1: 答:``` const { innerWidth, innerHeight } = window; console.log(`Browser window width: ${innerWidth}px, height: ${innerHeight}px`); ``` ### 回答2: 在React中,获取浏览器窗口的长宽可以通过使用JavaScript的window对象来实现。下面是一个获取浏览器窗口长宽的完整代码示例: ``` import React, { useEffect, useState } from 'react'; const WindowDimensions = () => { const [windowWidth, setWindowWidth] = useState(window.innerWidth); const [windowHeight, setWindowHeight] = useState(window.innerHeight); useEffect(() => { const handleResize = () => { setWindowWidth(window.innerWidth); setWindowHeight(window.innerHeight); }; window.addEventListener('resize', handleResize); return () => { window.removeEventListener('resize', handleResize); }; }, []); return ( <div> <p>浏览器窗口宽度:{windowWidth}px</p> <p>浏览器窗口高度:{windowHeight}px</p> </div> ); }; export default WindowDimensions; ``` 上述代码中,我们使用了useState来定义了windowWidth和windowHeight两个state变量,用于保存浏览器窗口宽度和高度。利用useEffect钩子函数,在组件挂载时添加了resize事件的监听器,并在监听器中通过setWindowWidth和setWindowHeight更新state变量的值。同时,也在组件卸载时移除了resize事件的监听器,以防止内存泄漏。 最后,在组件的返回值中,我们使用了windowWidth和windowHeight,将宽度和高度的数值显示在页面上。 当组件被渲染时,它将显示当前浏览器窗口宽度和高度,并在窗口大小发生变化时自动更新。 ### 回答3: 在React中,我们可以使用`window.innerWidth`和`window.innerHeight`属性来获取浏览器窗口宽度和高度。 首先,我们需要在React组件中创建一个state来存储窗口宽度和高度。在构造函数中初始化state: ``` constructor(props) { super(props); this.state = { windowWidth: window.innerWidth, windowHeight: window.innerHeight }; } ``` 然后,我们需要在组件挂载时添加一个事件监听器来更新窗口的尺寸,并在组件卸载时移除事件监听器。可以使用`componentDidMount`和`componentWillUnmount`生命周期方法来实现: ``` componentDidMount() { window.addEventListener('resize', this.handleResize); } componentWillUnmount() { window.removeEventListener('resize', this.handleResize); } ``` 在`handleResize`方法中,我们可以更新state中的窗口尺寸: ``` handleResize = () => { this.setState({ windowWidth: window.innerWidth, windowHeight: window.innerHeight }); } ``` 最后,在组件的render方法中,我们可以使用state中的窗口尺寸来显示它们: ``` render() { return ( <div> <h2>浏览器窗口尺寸:</h2> <p>宽度: {this.state.windowWidth}</p> <p>高度: {this.state.windowHeight}</p> </div> ); } ``` 这样,我们就可以获取并显示浏览器窗口的完整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值