Ich entwickle eine einfache hoc-Komponente, die auf seine Kinder Ansichtsfenster Dimensionen geht implementiert. Bei der Fenstergrößenanpassung initiiere ich die Methode handleResize, um neue Fenstermaße in die untergeordnete Komponente zu übernehmen. Ich möchte debounce func von lodash verwenden Anzahl der Male zu minimieren, dass handleResize Methode aufgerufen wird (ref).Reagieren. Entprellungsfunktion die setState Methode
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
Es funktioniert wie erwartet, aber ich bekomme immer wieder die Warnung, dass:
tut jemand weiß, was los ist?
lass es mich wissen
Dimitar Christoff, danke für die Antwort und Erklärung! funktioniert! – Petro