You have to track selected items inside state and to update list on onClick
:
...
const [datas, setDatas] = useState(data);
const [selectedItems, setSelectedItems] = useState([]);
const toggleCrossText = (item) => {
const exists = selectedItems.some(
x => x.transactionDate === item.transactionDate
);
if (exists) {
// Remove item from selected items;
setSelectedItems(
selectedItems.filter(x => x.transactionDate !== item.transactionDate)
);
} else {
// Mark new item as selected;
setSelectedItems([...selectedItems, item]);
}
};
const columnsData: IColumn[] = [
...
{
key: 'lookup',
name: '',
fieldName: 'lookup',
minWidth: 50,
maxWidth: 50,
onRender: (item: any, index: any) => (
<CommandButton
style={{ color: isChecked(item) ? '#f00' : '#000' }}
onClick={() => toggleCrossText(item)}
text="Btn"
/>
),
},
];
<DetailsList columns={columnsData} items={datas} />
And finally one function to check does item from original array exists as selected:
const isSelected = (item) =>
selectedItems.some(x => item.transactionDate === x.transactionDate);
Forked working example.
Note:
To style FluentUI Components use Styles
property instead Style
. More info here.