現在のコンポーネントの値はstate.breaker
で、falseです。スクロールイベントがキャプチャされるとき、それはstate
を見て、そのfalse
が何かをします。反応。 this.setStateはsetTimeout内の関数ではありません
私が再発するアクションの前に静的遅延のいくつかの種類を持っていると思いますし、それがgoTo
関数内state.breaker
がtrue
に設定されている理由だと次の2s
setTimeout
まではに戻りますため、現在の方法のさらなるロジックをブロックしますfalse
。
しかし、現時点で次のエラーが捕捉されない例外TypeErrorが発生します。this.setStateはsetState
がsetTimeout
内部で呼び出される関数ではありません。
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
}
本当にありがとうございます! :) – volna