アニメーションに少し問題があります。私はエラーのために私のアプリでFlash Bar Infoをやろうとします。私は新しいコンポーネントを作成するために、このコンポーネントを特定のビューに配置するかどうかを指定することができます。エラーが発生した場合、コンポーネントの状態はcomponentWillReceiveProps
で変更され、エラーメッセージ。Reactコンポーネントがアンマウントするときのネイティブキャンセルアニメーションの遅延
ので、エラーメッセージがない場合、関数はfalseを返すレンダリングが、私は実行して、エラーメッセージがある場合は、私のこのアニメーションコードと機能をレンダリング、私:私は私の見解に滞在する場合
// Ease in ease out anitmation
Animated.sequence([
Animated.timing(this.state.translateY, {
toValue: 40,
easing: Easing.bounce, // Like a ball
duration: 450,
}),
Animated.delay(3000),
Animated.timing(this.state.translateY, {
toValue: 0,
duration: 300,
}),
]).start(() => {
this.props.clearMessage();
this.setState({ visible: false }); // <-- Problem is here
});
アニメーションの遅延の間、それは正常に動作しますが、メッセージが可視に設定されているときに前のビューに移動すると、コンポーネントがマウントされていないときには関数setState
が呼び出されます。 だから私はこのワーリングを得た:
Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the undefined component.
コンポーネントは、この時点でマウントされていないので、それは正常な動作です。 コンポーネントをアンマウントするときにアニメーションシーケンスをキャンセルする方法を見つけようとします。私の研究の間に
私はコンポーネントがアンマウントされますときclearTimeout
とsetTimeout()
機能を使用して、一時的な方法を見つけるが、私はAnimated.sequence
でAnimated.delay
機能でそれを行う方法を見つけることができない、それは可能ですか?
事前にお返事ありがとうございます。
TLDR;
コンポーネントをアンマウントするときにアニメーションの遅延をキャンセルすることはできますか?
ドキュメントには、「stopAnimation」メソッドがあります。あなたはそれを調べてみましたか? [ここ](https://facebook.github.io/react-native/docs/animated.html#stopanimation)です。 –
ありがとうございました。でも、私も試してみましたが、 'stopAnimation'関数は' Animated.sequence'には見つかりませんでした。 –