Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

REACT ERROR <th> cannot appear as a child of <thead>. See (unknown) > thead > th

I am working on a react - rails app and I keep getting this error in my console:

``` Warning: validateDOMNesting(...): <th> cannot appear as a child of <thead>.  See (unknown) > thead > th. 

I'm not sure why this isn't working..I want to use header (thead) for a table and it worked for someone else. I would put tbody but I need that for the actual body of the table.

here is my code for this table:

```        React.DOM.table         className: 'table table-bordered'         React.DOM.thead null,           React.DOM.th null, 'Description'           React.DOM.th null, 'Actions'         React.DOM.tbody null,           for post in @state.posts             React.createElement Post, key: post.id, post: post,              handleDeletePost: @deletePost 

**EDIT I have tried adding the tr tag under thead and that causes an extra added error. this is what I changed my code to:

```    React.DOM.table       className: 'table table-bordered'       React.DOM.thead null         React.DOM.tr null           React.DOM.th null, 'Description'           React.DOM.th null, 'Actions'         React.DOM.tbody null,           for post in @state.posts             React.createElement Post, key: post.id, post: post,              handleDeletePost: @deletePost 

and the next error i get is: Warning: validateDOMNesting(...): tr cannot appear as a child of table. See (unknown) > table > tr. Add a to your code to match the DOM tree generated by the browser.

I'm new to react and not familiar with coffeescript so I'm wondering if it has to do with the spacing or something. Tested out different spacing and that didn't help. I took out the thead all together and that caused my app to break so..not sure what's the problem

like image 991
DianaBG Avatar asked May 13 '17 22:05

DianaBG


2 Answers

The only direct children allowed for thead are tr elements, not th.

<table>   <thead>     <tr>       <th />     </tr>   </thead>   ... </table> 
like image 180
Bertrand Marron Avatar answered Sep 30 '22 06:09

Bertrand Marron


Well th should be nested under a tr not a thead. Docs

<table>    <thead>      <tr>        <th>name</th>        <th>age</th>      </tr>    </thead>    <tbody>      <tr>        <td>john</td>        <td>33</td>      </tr>      <tr>        <td>smith</td>        <td>22</td>      </tr>      <tr>        <td>jane</td>        <td>24</td>      </tr>    </tbody>  </table>
like image 20
Sagiv b.g Avatar answered Sep 30 '22 05:09

Sagiv b.g