2017-09-12 2 views
0

返すTRでレンダリング2を使用したい:は、私は(){私は以下のように復帰して2個のtrタグを使用したい

render() { 
    return<tr>row1</tr><tr>row2</tr> 
} 

、それは私にエラーを与える:隣接するJSX要素を囲んで包まれなければなりませんタグ。

私はこれらを共通のコンポーネントで囲む必要があることを知っています。しかし、divタグにそのタグを書き込むと、たとえば:

return <div><tr>row1</tr><tr>row2</tr></div> 

私のレイアウトが変わります。

これを達成する方法はありますか?

+0

あなたはブラケットそれ実際のコード閉め忘れたのか? – Oscar

+1

あなたは構造体を変更し、 'td'でそれらをラップする必要があります。 –

+1

React v16を使用している場合は、配列を返すことができます。 – Chris

答えて

1

親をラップしない2つの行(たとえばtdtableなど)を実際にレンダリングする場合は、それに応じて子を「ラップする」2番目のコンポーネントを作成することをお勧めします。しかし、これはReact16以降でのみ有効です。あなたのrender方法で

const Main = props => { 
return props.children 
} 

render() { 
    return (
    <Main> 
     <tr>Row 1</tr> 
     <tr>Row 2</tr> 
    </Main> 
) 
} 

したい場合という扱いNPMパッケージもあります:https://github.com/gajus/react-aux

+0

私は真剣にこれが動作するのか疑問に思う。 'Main'コンポーネントは依然としてReactコンポーネントであり、コード例では' children'を返しています。これは2つのReactコンポーネントを持つ配列です。配列は有効なReact要素ではありません(React v16はまだRCにあります)。つまり、もし私が何かを見逃していると、これを実例でデモすることができます。私は喜んでダウンボートをupvoteに変更します。 – Chris

+0

「Main」は反応成分であると言うのは間違いありません。しかし、それはDOM要素ではありません(あなたが達成したいものです)。 'react-aux' repoをチェックして、そのドキュメントを読むこともできます。それはちょうど私がちょうど答えたと言う: – mersocarlin

+0

よく、ここに私のテスト:https://jsfiddle.net/f4x8knuy/そして、あなたがコンソールを見れば、それは返されている無効な反応要素について文句を言う。 – Chris

関連する問題