Reactコンポーネントがアンマウント/再利用されているときに約束を取り消そうとしています。 > =マウントReactコンポーネントがアンマウント/再利用されたときにPromiseで次の 'then'を取り消すにはどうしたらいいですか?
**約束が
(AJAXリクエストを実行し、それに応じてReduxのストアを更新)を完了しなければならないコンポーネントが作成されます。今、私は私がより良いよりも少し下のグラフで説明することができ、問題に直面しています=> _onClick()fired => Promise starts =>コンポーネントはアンマウントされますがリサイクルされます=> Promise finished =>はリサイクルされたコンポーネントでsetState()を呼び出し、前のコンポーネントから間違った状態でrerendersします。
私はどのようにして中断/中断/次の「その時」を止めることができますが、依然としてプロミスを実行できますか?
...
_onClick() {
let dispatch = this.props.dispatch;
if (!this.state.on) {
API.On(dispatch, this.props.id).then(() => {
this.setState({
on: true,
})
}).catch((error) => {
this.setState({
on: false,
})
});
} else {
API.Off(dispatch, this.props.id).then(() => {
this.setState({
on: false,
});
}).catch((error) => {
this.setState({
on: true,
})
})
}
}
...
コンポーネントをアンマウントする原因は何ですか? – jmargolisvt
@jmargolisvtコンポーネントがリストの中にあります。例:リスト内の2つのコンポーネント。最初の1つは削除され、2つ目のコンポーネントは先頭に移動します。最初の1からの約束は、2番目のコンポーネント内で呼び出されます。 – tom12e