2016-08-02 13 views
0

私はこのような何かレンダリング例<Foo />ためのコンポーネント、お持ちの場合:React:コンポーネントを別のコンポーネントに渡すことはできますか?

<div> 
    <Bar /> 
    {/* ... */} 
</div> 

は、fooのプロパティとしてバーを渡すことが可能でしょうか? <Foo Bar={Bar}/>。だから私はFooののレンダリング時にバーを参照することができます。これはちょうど誰かが私よりも知っているかどうかをチェックする、正直に言うと良いでしょう場合

render() { 
    const Bar = this.props.Bar; 
    return (
    <div> 
     <Bar /> 
     {/* ... */} 
    </div> 
); 
} 

は私は知りません。

私がこのようなことをしたいのは、コンポーネントをテストしたいので、コンポーネントに偽の依存関係を挿入する方法を考えていたからです。あるプロジェクトでは、私はPreactを使用することを考えていましたが、これは浅いレンダーでは動作しませんでした。したがって、多分何らかの依存性注入を行うことを考えていました。

コンポーネントが使用するコンポーネントを通すことで、テスト中に模擬テストに合格することができます。

これは良い考えですか?本当に行く方法は?...

+0

HOCは、同様の動作を複製するためのより良い代替方法です。この記事ではそのようなアプローチについて詳しく説明します。 https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e#.r4mbzunhu – Deadfish

答えて

1

私はなぜそれが悪い考えであるのかわかりません。

あなたはコンポーネントを反応させるの構築

、あなたはプレーン Javascriptをに変換されますいくつかの構文(JSX)と Javascriptのオブジェクトを構築しています。したがって、 の返信コンポーネントを渡すのは、 JavaScriptのオブジェクトのようなものです。

react-routerでコンポーネントを渡す方法は、ルートです。

+0

本当に、私は気づいた。そしてchildrenプロパティはコンポーネントの配列です。しかし、私は以前のアプローチが使われているのを見ていないので、少し気にしませんでした。 –

+0

お返事ありがとうございました –

+1

私がここで考えることができる唯一の悪い点は、ここで実際に作成される要素の種類を知るために親コンポーネントをチェックする必要があります。 多くのコンポーネントがこのようなマークアップを作成すると、これははるかに大きな問題になります。 (スケーラビリティ/可読性) – magnudae

関連する問題