1
我正在开发一个简单的组件,它将视口尺寸传递给子组件。在调整窗口大小时,我启动了handleResize方法将新的窗口尺寸传递给子组件。我想使用lodash中的debounce func来最小化调用handleResize方法的次数(ref)。反应。实现setState方法的去抖动功能
import React from 'react'
import debounce from 'lodash/debounce'
const getDimensions = (Component) => {
return class GetDimensions extends React.Component {
constructor() {
super()
this.state = {
viewport: {
x: window.innerWidth,
y: window.innerHeight
}
}
}
handleResize =() => {
this.setState(() => ({viewport: {x: window.innerWidth, y: window.innerHeight}}))
}
componentDidMount =() => {
if (window) window.addEventListener('resize', debounce(this.handleResize, 400))
}
componentWillUnmount =() => {
if (window) window.removeEventListener('resize', this.handleResize)
}
render() {
return (
<Component
{...this.props}
viewport={this.state.viewport}
/>
)
}
}
}
export default getDimensions
有谁知道这是怎么回事?
请让我知道
Dimitar Christoff,谢谢你的回答和解释!作品! – Petro