何がより効率的ですか?コンポーネントをマウントしたりマウント解除したりする必要がありますか?アンマウント、またはReactで非表示にしますか?
これが私のために現れた実際的なケースは、モーダルです。私は、親コンポーネントにモーダルの「アクティブ」状態を維持し、それをモーダルへの支柱として渡すことができます。これはおそらくclassName 'active'を適用します。または、私は表示するモーダルを決定するモーダル 'ナビゲータ'を持つことができ、その参照は他のコンポーネントに渡されます。
何がより効率的ですか?コンポーネントをマウントしたりマウント解除したりする必要がありますか?アンマウント、またはReactで非表示にしますか?
これが私のために現れた実際的なケースは、モーダルです。私は、親コンポーネントにモーダルの「アクティブ」状態を維持し、それをモーダルへの支柱として渡すことができます。これはおそらくclassName 'active'を適用します。または、私は表示するモーダルを決定するモーダル 'ナビゲータ'を持つことができ、その参照は他のコンポーネントに渡されます。
私はアイテムが必要ない場合は常にreturn null
ですが、私はいつもreturn null
です。
主な理由は、サーバー側のレンダリングを行っていて、「隠されていてもレンダリングされる」数百行のHTML行がある場合は、ワイヤ。
モーダル「ナビゲーター」(以下「導体」)は、あなたのDOMツリーの最上部にある最後の子として座って、適切なモーダルまたはnullを返します:
import React from 'react';
import ExportDataModal from './ExportDataModal.jsx';
import SignInModal from './SignInModal.jsx';
import FeedbackModal from './FeedbackModal.jsx';
import BoxDetailsModal from './BoxDetailsModal.jsx';
const ModalConductor = props => {
switch (props.currentModal) {
case 'EXPORT_DATA':
return <ExportDataModal {...props}/>;
case 'SOCIAL_SIGN_IN':
return <SignInModal {...props}/>;
case 'FEEDBACK':
return <FeedbackModal {...props}/>;
case 'EDIT_BOX':
return <BoxDetailsModal {...props}/>;
default:
return null;
}
};
export default ModalConductor;
Here's an articleビットに移行していますReactのModalsについての詳細
これは素晴らしいことです!記事のおかげで、私はapprochが好きです – alexbake
この関連する問題が見つかりました:http://stackoverflow.com/questions/12079345/which-is-one-more-expensive-to-call-showing-hiding-a-dom-node-or-creating-delet I Reactのバーチャルドームがこれに何らかの影響を及ぼすかどうかまだ不思議です – alexbake
モデルの状態を使用する場合は非表示にしてレンダリングや更新が呼び出されないため、コンポーネントを削除して非表示にすることをお勧めします隠されたもの –
コンポーネントの出入りをアニメートする場合は、CSSを使用する方が簡単です。ただし、これに 'ReactCSSTransitionGroup'を使用することもできます。アニメートしたくない場合は、レンダリングしないでください。 – Scarysize