私はビューポートの寸法を子に渡す簡単なコンポーネントを開発しています。ウィンドウのサイズ変更では、新しいウィンドウ寸法を子コンポーネントに渡すためにhandleResizeメソッドを開始します。私は、handleResizeメソッドが呼び出される回数(ref)を最小限に抑えるために、lodashのデバウンス関数を使いたいと思っています。React。 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
誰もが何が起こっているか知っていますか?
教えてください
ディミタル・クリストフ、答えと説明のおかげで!作品! – Petro