私のコード:私はクラスを追加する必要がありhttp://codepen.io/rafaelfndev/pen/gmqmvoは、バックグラウンドオーバーレイを追加/削除や、サイドバーのトグルクラスに反応
:
.overflow
にbody
.overlay-active
へ.overlay
.sidebar-active
へ#sidebar
.show-sidebar
をクリックすると、このクラスを持つコンポーネントの場所に関係なく追加が必要です。私は.hide-sidebar
をクリックすると、私はこのクラスを削除必要、と私は.toggle-class
をクリックした場合、私はこのクラスをトグルする必要があります...
は、私はちょうどリアクトパターンを使用して、まさにこのコードはありませんが、jQueryのなしで実行する必要があります。
$('.toggle-sidebar').click(function(){
$('#sidebar').toggleClass('sidebar-active');
$('body').toggleClass('overflow');
$('overlay').toggleClass('overlay-active');
});
$('.show-sidebar').click(function(){
$('#sidebar').addClass('sidebar-active');
$('body').addClass('overflow');
$('overlay').addClass('overlay-active');
});
$('.hide-sidebar, overlay').click(function(){
$('#sidebar').removeClass('sidebar-active');
$('body').removeClass('overflow');
$('overlay').removeClass('overlay-active');
});
おかげで、しかし、このコードは唯一の特定のコンポーネントに更新し、私は子供や親のないコンポーネントに更新する必要があり、かつあるにも別のコンポーネント:
コードは以下の通りですそれらに接続されていない、イベントを聞いているようなもの、そして* all *(クラス)を同時に変えるもの... – rafaelfndev
コンポーネントの構成を使用してください。コンテナコンポーネントには、クリックイベントに応じて状態を変更する必要がある他のコンポーネントが含まれていて、その状態を小道具で渡すだけです。このパターンが頻繁に表示される場合は、mobxやreduxなどの状態管理ライブラリを使用してイベントを送出し、グローバル状態を変更し、コンポーネントをそのグローバル状態にバインドすることをお勧めします。 –