javascript - 如何在 React 中使用映射从数组创建 Material-UI 嵌套样式对象

标签 javascript arrays reactjs material-ui

我有一些像这样传入的 Prop 数据

columns={
  [
    {
      name: "Fund Name",
      width: "40%"
    },
    {
      name: "Review Date",
      width: "20%"
    },
    {
      name: "Company Debt",
      width: "20%"
    },
    {
      name: "Alerts",
      width: "10%"
    }
  ];
}

我需要它看起来像这样......

const localTheme = {
  overrides: {
    MUIDataTableHeadCell: {
      root: {
        "&:nth-child(1)": {
          width: "40%"
        },
        "&:nth-child(2)": {
          width: "20%"
        },
        "&:nth-child(3)": {
          width: "20%"
        },
        "&:nth-child(4)": {
          width: "10%"
        },
        "&:nth-child(5)": {
          width: "10%"
        }
      }
    }
  }
}

我正在尝试这个...

let rowWidths = this.props.columns.map((item, key) => ({
  "&:nth-child(+key+)": {
    width: item.width
  }
}));

const localTheme = {
  overrides: {
    MUIDataTableHeadCell: {
      root: {
        rowWidths
      }
    }
  }
}

但这显然行不通。有人可以帮忙吗?

谢谢

最佳答案

您可以利用 Object.assign、扩展语法和字符串文字来获得所需的结果

let columns=[
{
    name: "Fund Name",
    width: "40%"
}, {
    name: "Review Date",
    width: "20%"
}, {
    name: "Company Debt",
    width: "20%"
}, {
    name: "Alerts",
    width: "10%",
}]

let rowWidths = columns.map((item, key) =>
        ({
            [`&:nth-child(${key})`]: {
                width: item.width
            }
        })
    );

const localTheme = {
        overrides: {
            MUIDataTableHeadCell: {
                root: Object.assign({}, ...rowWidths)
            }
       }
  } 
  
  console.log(localTheme, rowWidths);

关于javascript - 如何在 React 中使用映射从数组创建 Material-UI 嵌套样式对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60923904/

相关文章:

javascript - 替换字符串javascript中的所有元音

javascript - Dropbox API - Node.js - 记住身份验证

javascript - zappier 代码中的基本 http 身份验证

javascript - 具有 Sails.js 后端的 Ionic 应用程序的 $http 身份验证

javascript - 我如何循环遍历数组并在 jquery 中动态创建项目

ReactJS:Stripe Google 和 Apple Pay

javascript - React + TypeScript : Scroll event type not assignable to window. addEventListener

javascript - 通过 jquery 获取多个选择框的值

javascript - 使用 ngFor 迭代类对象数组不以 Angular 5 显示

javascript - 从映射数组中获取元素