react-table custom cell component that references several row properties

34.5k views Asked by At

I need to implement table sorting by column so am rewriting my react table component using react-table's ReactTable component.

One of table cells will contain a link and needs to access more one row property. So far, the link column code looks like:

{
    Header: "Name",
    accessor: "name",
    Cell: cellInfo => (
        <Link className="scenarioDetailLink"
              to={cellInfo.row.linkDestination}
              id={cellInfo.row.linkName}>{cellInfo.row.name}</Link>
    )
},

It results in elements like this: td

The generated anchor element is missing id and href properties. What am I doing wrong.

3

There are 3 answers

1
softweave On BEST ANSWER

It turned out I needed to use cellInfo.original rather than cellInfo.row. When you provide a Cell renderer you should use cellInfo.original to get at all of your row data (especially if you aren’t showing that data as columns). The row only has what is displayed in the table.

0
enrico.devita On

in a column you can have:

 {
     Header: "dataProperty",
     accessor: "dataProperty",
     Cell: ({ value, row }) => {
         // here you can use value to render cell 
         // with value of dataProperty
         // or you can access all other row data properties 
         // from row.original
         // for example:
         return row.original.id; 
      }
    },
2
Rodolfo F Juarez On

I have had a similar problem and I have solved it as follows:

Cell: (tableInfo) => `$ {tableInfo.data [tableInfo.row.index] .dateToShow}`

where: tableInfo is an object that has among other things the following attributes: {columns: []}, data: [], comlumn: {}, row: [.], cell: {}} and dateToShow is a value that is not in the view, but exists in the data model. If you need to access data that is in the table view you can use the row object, if it is not in the table view you can access the data model using the data array.