TableRow
TableRow is the row-data record used by DataTable.
Each row has a stable id plus a list of string cells. The table matches those cells to the columns by index, so the order of the strings matters.
Example
use fission::prelude::*;
let row = TableRow {
id: "invoice_1024".into(),
cells: vec!["Paid".into(), "15 May 2026".into(), "$49.00".into()],
};
Field table
| | | |
|---|
| | | Required. Used for selection state and callbacks. |
| | Cell text in the same order as the table's columns. | Required. Extra cells render against fallback widths; missing cells leave gaps in meaning. |
Specific advice
Keep the real row data in structured app state and derive cells for presentation. That way sorting, filtering, and actions can continue to use typed data instead of parsing display strings back into meaning.
Production checklist
For TableRow, review the fields that change behavior before treating the widget as finished: id, cells. The goal is to make the product rule visible in state and actions, not hidden inside ad-hoc construction code.
If this widget appears inside an interactive flow, keep the surrounding action binding in the parent component and test that the flow still has one clear reducer path.
Set id only when identity must be stable across filtering, reordering, diagnostics, or tests; otherwise let Fission derive identity from structure.
Check the semantics tree for the user-facing label or role that makes this widget understandable without relying only on pixels.
Add at least one component or harness test that confirms the visible text, semantic role, action dispatch, and layout constraint that matter for this widget in context.
If a screen starts repeating the same TableRow setup, extract a named component around this widget. That keeps the reference API small while making product code easier to read and safer for generated code to copy.
DataTable, TableColumn, Text, and Card.