Material-Table:在点击/状态改变时改变特定动作的颜色
Material-Table: Change a specific action's colour on click / state change
如何根据不同的状态设置特定 MT 操作的样式?
目前我正在做这样的事情:
actions={[
rowData => {
const active = rowData && selected && rowData.tableData.id === selected.tableData.id;
return {
icon: 'bug_report',
iconProps: { color: active ? 'secondary' : 'primary' },
onClick: (event, info) => {
setSelected(info);
},
};
},
]}
但是,它没有为单个选定元素着色,而是保持 primary
并且什么都不做。为什么?是因为动作是为动作行呈现的,而下一行 !==
被选中了吗?
所以根据我的理解,我遵循了你的代码并得到了这个:
actions={[
rowData => {
let active =
rowData &&
clickedRow &&
rowData.tableData.id === clickedRow.tableData.id;
return {
icon: "bug_report",
tooltip: "Report bug",
onClick: (event, rowData) => setClicked(rowData),
iconProps: { color: active ? "primary" : "secondary" }
};
}
]}
这里是 sandbox.
我希望这就是您要找的,如果不是,我相信官方 docs 中有关选择功能的示例可能会帮助您解决此类问题。
祝你好运!
如何根据不同的状态设置特定 MT 操作的样式?
目前我正在做这样的事情:
actions={[
rowData => {
const active = rowData && selected && rowData.tableData.id === selected.tableData.id;
return {
icon: 'bug_report',
iconProps: { color: active ? 'secondary' : 'primary' },
onClick: (event, info) => {
setSelected(info);
},
};
},
]}
但是,它没有为单个选定元素着色,而是保持 primary
并且什么都不做。为什么?是因为动作是为动作行呈现的,而下一行 !==
被选中了吗?
所以根据我的理解,我遵循了你的代码并得到了这个:
actions={[
rowData => {
let active =
rowData &&
clickedRow &&
rowData.tableData.id === clickedRow.tableData.id;
return {
icon: "bug_report",
tooltip: "Report bug",
onClick: (event, rowData) => setClicked(rowData),
iconProps: { color: active ? "primary" : "secondary" }
};
}
]}
这里是 sandbox.
我希望这就是您要找的,如果不是,我相信官方 docs 中有关选择功能的示例可能会帮助您解决此类问题。
祝你好运!