【发布时间】:2018-12-07 22:36:14
【问题描述】:
我正在使用带有 Stage 2 预设的 Babel,并且有一个这样的 React 组件类:
class Test extends Component {
someValue = 'Hello';
componentDidMount() {
this.debouncedHandleResize = debounce(this.handleResize, 1000);
window.addEventListener('resize', this.debouncedHandleResize);
}
handleResize = () => {
console.log(this.someValue);
}
}
这按预期工作。窗口调整大小后 1000 毫秒,handleResize 方法触发并且控制台记录“Hello”。
为什么我不能执行以下操作?
class Test extends Component {
someValue = 'Hello';
debouncedHandleResize = debounce(this.handleResize, 1000);
componentDidMount() {
window.addEventListener('resize', this.debouncedHandleResize);
}
handleResize = () => {
console.log(this.someValue);
}
}
在这种情况下我得到一个错误:
TypeError: Expected a function
我一定遗漏了一些东西,但我认为这两种方法基本上都是为类分配属性值的方法。
【问题讨论】:
-
看起来很奇怪你会多次处理handleResize....
-
当我在堆栈 sn-p 中运行代码时,代码运行良好。
-
@epascarello 抱歉,我有几个错别字。我现在已经更正了。
-
console.log('this.handleResize', this.handleResize); debouncedHandleResize = debounce(this.handleResize, 1000); -
debounce不会导致您提到的错误,它没有这样的问题(除了您既没有绑定 debouncedHandleResize 也没有绑定handleResize)。考虑提供可以复制问题的stackoverflow.com/help/mcve。
标签: javascript reactjs ecmascript-6 lodash debounce