2016-07-17 4 views
2

何がより効率的ですか?コンポーネントをマウントしたりマウント解除したりする必要がありますか?アンマウント、またはReactで非表示にしますか?

これが私のために現れた実際的なケースは、モーダルです。私は、親コンポーネントにモーダルの「アクティブ」状態を維持し、それをモーダルへの支柱として渡すことができます。これはおそらくclassName 'active'を適用します。または、私は表示するモーダルを決定するモーダル 'ナビゲータ'を持つことができ、その参照は他のコンポーネントに渡されます。

+0

この関連する問題が見つかりました:http://stackoverflow.com/questions/12079345/which-is-one-more-expensive-to-call-showing-hiding-a-dom-node-or-creating-delet I Reactのバーチャルドームがこれに何らかの影響を及ぼすかどうかまだ不思議です – alexbake

+0

モデルの状態を使用する場合は非表示にしてレンダリングや更新が呼び出されないため、コンポーネントを削除して非表示にすることをお勧めします隠されたもの –

+0

コンポーネントの出入りをアニメートする場合は、CSSを使用する方が簡単です。ただし、これに 'ReactCSSTransitionGroup'を使用することもできます。アニメートしたくない場合は、レンダリングしないでください。 – Scarysize

答えて

2

私はアイテムが必要ない場合は常に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についての詳細

+0

これは素晴らしいことです!記事のおかげで、私はapprochが好きです – alexbake

関連する問題