2017-09-25 19 views
0

Reactアプリケーションのレイアウトレベルのコンポーネントをいくつか作成しています。私が理解しているように、私が利用できる2つの主要な設計パターンがあります - 構成的なコンポーネントと高次のコンポーネント。コンポーネントを小道具として渡しますか? Compositional vs Higher Order Components

コンフィグレーションスタイルのラッパーコンポーネントを作成するときに、props.childrenを使用する必要があると思っていますか?

また、2つの異なるコンポーネント(下の高次コンポーネントの例のように)を渡したい場合は、という高次コンポーネントのスタイルを使用する必要があると思いますか?

組成:

const CenteredColumn = props => (
    <div className="columns"> 
    <div className="column is-8 is-offset-2">{props.children}</div> 
    </div> 
); 

高次コンポーネント:

const withTwoColumns = ({ first, second }) => (
    <div className="columns"> 
    <div className="column">{first}</div> 
    <div className="column">{second}</div> 
    </div> 
); 

答えて

1

はい、あなたは正しいです。 コンポジションスタイルを使用すると、子供がコンポーネントを持っていることを知る前にコンポーネントに事前に渡すことができます。だから我々はこれを行うことができます:

を参照してください。https://facebook.github.io/react/docs/composition-vs-inheritance.html

だから、H1とpタグに、「fancyborder」のクラス名を持つdiv要素は、それらを囲む/ /ラップをカバーします。

HOCSに関しては、あなたも正しいです。それらは入力として他のコンポーネントを受け取り、コンポーネントを出力としてレンダリングするコンポーネントです。

私はコードを提供していません。私はタッチデバイスを使いました。これが助けてくれたらと思っています。

+0

これは素晴らしいです、ありがとう! –

0
あなたがあなたのレイアウトを設定する必要があります方法はpresentatational(ステートレス)コンポーネントにワークフローやのproyect構造を分割することによってである

プレゼンテーションコンポーネントは、メインコンポーネントからのみ小道具を受け取りますが、コンテナコンポーネントには、アプリケーションのロジック

+0

こんにちはクリストファー、感謝の応答。私はプレゼンテーションとコンテナのコンポーネントを認識していますが、私はスタイリングのためだけに、データに依存しないレイアウトレベルのコンポーネントを構築することに取り組んでいます。 (Bootstrap-Reactコンポーネントのようなもの)。彼らはまったく別のケースだと思います。 –

1

どちらも機能します。それを書いている方法から、コーディングスタイル/階層的な選択です。リアクションのための反パターンがありますが、これはその1つではありません。

+0

これは役に立ちました、ありがとう! –

関連する問題