2015-10-06 12 views
6

私がやりたい:反応すると、コンポーネントの子をラッパーなしでレンダリングできますか?

render:() -> 
     {@props.children} 

それは私がやらせている。

render:() -> 
     <div>{@props.children}</div> 

レンダリングされた子どもたちが自分の所有者ベースのコンテキストが設定されているので、私は、元をやりたい理由があります。しかし、それらをラッパーでレンダリングすると、親である要素にはコンテキストが設定されません。

所有者ベースと親ベースの文脈が異なる(値:[object Object]undefined)キー(x)のためにこれはここで議論されて

:これは、警告を生成https://gist.github.com/jimfb/0eb6e61f300a8c1b2ce7

をしかし、何の解決策を提供していません。

警告は、子をレンダリングするコンポーネントが「所有者」であり、設定コンテキストですが、divラッパー要素が「親」でコンテキストがないために発生します。私の考えはdivを取り除くことでした。しかし、私はそれを取り除くことはできません。状況で

render() { 
    if (!this.props.children) { 
    return null; 
    } else if (React.isValidElement(this.props.children)) { 
    return this.props.children; 
    } 
    return <span>{this.props.children}</span>; 
} 
+0

Hmの場合、 'div'はコンテキストに影響を与えるべきではありません。 JSBinの例(具体的には、これをレンダリングするコンポーネント、およびコンテキストが設定/使用されている場所)のコードがありますか? –

+0

私はまた、CSSの理由からこれをしたいと思います。 –

+0

これは無関係の問題でした。実際には、div要素を囲まずに子をレンダリングすることができます。 (FluxMixinによって追加されたfluxxorのインスタンスと、react-routerで使用されるコンポーネント作成ファクタラッパーによってインスタンスが追加されたインスタンスとの間に矛盾が生じました)。ありがとう。 –

答えて

3

render() { 
    return React.Children.only(this.props.children) 
} 

これはどのような反応-Reduxのですconnect()、FWIWで使用します。

1

単一の子供が必要とされています:私はtext子供にラッパー<span>を使用するには、次のコードを使用しました

関連する問題