ReactはデータをDOMにレンダリングするので、最初に値を1つ、次に値を持つ変数を保持し、次にメッセージを最初に表示して非表示にする必要があります。 jQueryのfadeOut
で直接DOM要素を削除できますが、manipulating DOM can cause problemsです。
したがって、考えられるのは、2つの値のいずれかを持つ特定のプロパティがあることです。最も近い実装はブール値です。メッセージボックスは常にDOM内にあるので、それはいくつかの要素の子です。 Reactでは、要素はコンポーネントをレンダリングした結果であるため、コンポーネントをレンダリングすると、必要な数の子を持つことができます。メッセージボックスを追加することができます。
次に、このコンポーネントには簡単に変更できるプロパティが必要です。コンポーネントを変更するとすぐに、新しいデータでコンポーネントが再描画されることを完全に確実に確認する必要があります。それはコンポーネントの状態です!ここで
class App extends React.Component {
constructor() {
super();
this.state = {
showingAlert: false
};
}
handleClickShowAlert() {
this.setState({
showingAlert: true
});
setTimeout(() => {
this.setState({
showingAlert: false
});
}, 2000);
}
render() {
return (
<div>
<div className={`alert alert-success ${this.state.showingAlert ? 'alert-shown' : 'alert-hidden'}`}>
<strong>Success!</strong> Thank you for subscribing!
</div>
<button onClick={this.handleClickShowAlert.bind(this)}>
Show alert
</button>
(and other children)
</div>
);
}
}
は、コンポーネントの状態のshowingAlert
プロパティの値(truthiness)に応じて、どちらかalert-shown
またはalert-hidden
クラス名が設定され、メッセージボックスのために、それを見ることができます。 transition
CSS propertyを使用すると、見た目を隠したり見せたりするのを滑らかにすることができます。
したがって、ユーザーがメッセージボックスを表示するためにボタンをクリックするのを待つのではなく、明らかに特定のイベントのコンポーネント状態を更新する必要があります。
これはまずはうまくいくはずです。次に、CSSトランジション、display
、height
のメッセージボックスのCSSプロパティを試してみてください。メッセージボックスの動作やスムーズな移行が起こっているかどうかを確認してください。
幸運を祈る!
PS。 a Codepen for thatを参照してください。
何を試しましたか?あなたが特定の問題に戻ってくるのを助けが必要な場合、私たちはうまくいけばいくつかのアイデアをあなたの方法で投げることができる場合、SOの仕組みはあなたです。 –