Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

react-table custom cell component that references several row properties

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.

like image 728
softweave Avatar asked Aug 30 '17 20:08

softweave


3 Answers

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.

like image 151
softweave Avatar answered Nov 18 '22 12:11

softweave


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.

like image 4
Rodolfo F Juarez Avatar answered Nov 18 '22 13:11

Rodolfo F Juarez


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; 
      }
    },
like image 1
enrico.devita Avatar answered Nov 18 '22 12:11

enrico.devita