【发布时间】:2019-03-24 06:38:43
【问题描述】:
我正在使用 react 和 lodash 的 debounce 方法。我遇到的问题是当用户调整窗口大小时更新状态。
我遇到的问题是,当用户在此函数中调整窗口大小时,this 指的是window,而不是组件:
window.addEventListener('resize', this.delayedCallback)
我尝试设置const that = this 等,但无法获得正确的范围。有谁知道如何解决这个问题?
见下面的代码:
class Card extends Component {
constructor(props) {
super(props)
this.state = {
cardElWidth: null
}
this.delayedCallback = debounce(this.setCardWidth, 1000);
this.CardEl = React.createRef()
}
componentDidMount () {
this.setCardWidth()
window.addEventListener('resize', this.delayedCallback)
}
setPlayerCardWidth() {
this.setState({
cardElWidth: this.CardEl.current.offsetWidth
})
} ... rest of code
【问题讨论】:
标签: javascript reactjs ecmascript-6 this lodash