如何更改 onRowAdd、onRowUpdate、onRowDelete 的材质表图标的颜色?

时间:2021-04-19 10:00:29

标签: javascript reactjs material-ui material-table

我尝试在材料表库中进行基本的 crud 操作。通过使用 onRowAddonRowUpdateonRowDelete,我得到了相同的图标,但我想知道如何更改这三个图标中每一个的颜色?

你可以看到我的表格有几个图标,我专注于添加、编辑、删除图标我想改变这些图标的颜色。

这是我的代码和盒子的 link

App.js 文件

import React, { useState } from 'react';
import './App.css';
import MaterialTable from 'material-table'

const empList = [
  { id: 1, name: "Neeraj", email: 'neeraj@gmail.com', phone: 9876543210, city: "Bangalore" },
  { id: 2, name: "Raj", email: 'raj@gmail.com', phone: 9812345678, city: "Chennai" },
  { id: 3, name: "David", email: 'david342@gmail.com', phone: 7896536289, city: "Jaipur" },
  { id: 4, name: "Vikas", email: 'vikas75@gmail.com', phone: 9087654321, city: "Hyderabad" },
]

function App() {

  const [data, setData] = useState(empList)
  const columns = [
    { title: "ID", field: "id", editable: false },
    { title: "Name", field: "name" },
    { title: "Email", field: "email" },
    { title: "Phone Number", field: 'phone', },
    { title: "City", field: "city", }
  ]


  return (
    <div className="App">
      <h1 align="center">React-App</h1>
      <h4 align='center'>Material Table with CRUD operation</h4>
      <MaterialTable
        title="Employee Data"
        data={data}
        columns={columns}
        editable={{
          onRowAdd: (newRow) => new Promise((resolve, reject) => {
            const updatedRows = [...data, { id: Math.floor(Math.random() * 100), ...newRow }]
            setTimeout(() => {
              setData(updatedRows)
              resolve()
            }, 2000)
          }),
          onRowDelete: selectedRow => new Promise((resolve, reject) => {
            const index = selectedRow.tableData.id;
            const updatedRows = [...data]
            updatedRows.splice(index, 1)
            setTimeout(() => {
              setData(updatedRows)
              resolve()
            }, 2000)
          }),
          onRowUpdate:(updatedRow,oldRow)=>new Promise((resolve,reject)=>{
            const index=oldRow.tableData.id;
            const updatedRows=[...data]
            updatedRows[index]=updatedRow
            setTimeout(() => {
              setData(updatedRows)
              resolve()
            }, 2000)
          })

        }}
        options={{
          actionsColumnIndex: -1, addRowPosition: "first"
        }}
      />
    </div>
  );
}

export default App;

2 个答案:

答案 0 :(得分:3)

您可以通过设置 icons 道具来覆盖图标并提供自定义样式。它接受一个对象,其中键是一种操作类型(AddEditDelete、...),而值是一个图标组件。如需参考,请参阅所有道具部分 here

<MaterialTable
  {...props}
  icons={{
    Edit: () => <EditIcon style={{ color: "orange" }} />,
    Delete: () => <DeleteIcon style={{ color: "red" }} />
  }}
>

现场演示

Edit 67159866/how-would-i-change-the-custom-color-of-material-table-icons-of-onrowadd-onrowup

答案 1 :(得分:1)

很简单。检查页面并选择图标并在样式选项卡中复制其样式名称。

现在,转到 App.css 文件并使用 Inspect-styles 区域中显示的图标样式名称创建新样式,您可以在那里输入所需的颜色。

它会起作用。

在您的 App.css 文件中, 添加以下代码

.MuiIconButton-colorInherit {
    color: red;
}

更改为任何颜色