2016-10-25 19 views
0

私はParentというコンポーネントを取得し、別のコンポーネントをChildに注入します。親コンポーネントの子プロップをReduxで読む

は、次のように定義された小道具を有する:

function mapStateToProps(state) { 
    return { 
    foo : 'some-value' 
    } 
} 

私はそのような成分でfooにアクセスしたい:アフター

class Parent extends Component { 
render(){ 
    //something like this 
    <div className={this.props.children.foo}> 
     {this.props.children} 
    </div> 
} 

@edit

これを使用してReact.Children.toArray私は配列として子を取得し、forEach -itを取得しました。

しかし、小道具はchild.propsで利用できません。

何かがありません。誰でもアイデアはありますか?

+0

はい、しかし何のプロパティがmapStateToPropsに返されません、私はReduxの「this.props.children」を使用すると、常にConnectコンポーネントになることに気づいた開発ツールを反応させるの使用 –

+0

こんにちは、(反応-Reduxのライブラリを参照してください)、私はそこにあります実際の問題は、定義したコンポーネントであるConnectの子を取得することだと考えてください。 –

+0

接続メソッドに "withRef"オプションがあり、デフォルトではfalseに設定されているラップされたコンポーネントにアクセスします。https://github.com/reactjs/react-redux/blob/master/docs/api.md –

答えて

0

this.props.childrenは、あなたがそれにループ

render() { 
    this.props.children.forEach((component) => { 
    console.log(component.props.foo); 
    }) 

    return ...; 
} 

は、あなたの子供たちは、単一ノードまたは複数のノードすることができthis

+0

は有望ですが、子供を反復することはできません。それはforEachは関数ではないと言います。 'for 'を試してみてもエラー –

+0

を投げた場合、(配列、オブジェクトなど)の前に子プロパティのタイプをチェックすることができます。そうすれば、必要なプロパティを取得する方法の手がかりが得られます。 –

+0

this.props.childrenをcomponentDidMountメソッドで反復しようとしましたか? –

0

を見てみましょうする必要があり、複数の構成要素とすることができたよう。単一ノードの場合は、propsに直接アクセスしてください。そうでない場合は、mapを使用して子ノードを反復処理し、porpsを返します。

希望すると便利です。

render() { 
    const childProps = ! this.props.children instanceof Array 
    ? this.props.children.props.foo //returns foo if child is a single node 
    : this.props.children.map(child => child.props.foo) // returns array of foo if children is a multiple nodes. 

    console.log(childProps) 

    return ...; 
} 
関連する問題