React. this.setState is not a function inside setTimeout
本问题已经有最佳答案,请猛点这里访问。
当前组件的
我希望在动作再次发生之前有某种静态延迟,这就是为什么在
但目前,以下错误发生在未捕获类型错误的情况下:当
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | class Slide extends Component { constructor(props) { super(props) this.state = { breaker: false } this.scrollRedirect = this.scrollRedirect.bind(this); } componentDidMount() { this.refs.holder.addEventListener('mousewheel', this.scrollRedirect); } scrollRedirect(e) { const path = this.props.location.pathname, goTo = (route) => { this.setState({breaker: true}); hashHistory.push(route); setTimeout(function () { this.setState({breaker: false}); }, 2000) }; if (!this.state.breaker) { ... code that executes goTo on condition } } ... render code } |
你失去了背景。使用arrow函数作为保存正确执行上下文的简单方法:
1 2 3 | setTimeout(() => { this.setState({breaker: false}); }, 2000) |
记住,匿名函数将在内部具有上下文
1 2 3 | setTimeout(function () { this.setState({breaker: false}); }.bind(this), 2000) |