0
何らかの理由により、this.getVisible()
がスクロール/サイズ変更イベントで起動していません。誰かが問題が何であるか教えてもらえますか?イベントリスナーの追加/削除
import React, { Component } from 'react'
const ZeroSum = ({
selector,
...passedProps,
}) => WrappedComponent => class WithZeroSum extends Component {
constructor(props) {
super(props)
this.selector = document.querySelector(selector)
this.state = {
zeroSum: 0,
}
}
componentWillMount() {
window.addEventListener('scroll resize',() => this.getVisible())
this.getVisible()
}
componentWillUnmount() {
window.removeEventListener('scroll resize',() => this.getVisible())
}
getVisible() {
const vHeight = document.documentElement.clientHeight
const eTop = this.selector.getBoundingClientRect().top
return this.setState({ zeroSum: Math.max(0, vHeight - eTop) })
}
render() {
const { zeroSum } = this.state
const props = { ...this.props, ...passedProps }
console.log(zeroSum)
return <WrappedComponent {...props} zeroSum={zeroSum} />
}
}
export default ZeroSum
はあなたに感謝!できるだけ早く受け入れるよ。 – cocacrave
@cocacrave後でイベントリスナーを削除するには、 'this.getVisible.bind(this)'を変数または状態に保存する必要があります。 –