在地图中使用三元运算符,我想使用它来更改 material table 的列宽
Using ternary operator inside map using which I want to change column width of material table
我正在尝试根据从地图函数收到的 ID 更改列宽。这是代码:
<TableRow>
{
tableData.header.map(header => {
header.id === "name" ?
(<TableCell style={{width: 100}} align="center" key={header.id}>
{
header.title
}
</TableCell>)
:
(<TableCell style={{minWidth: 185}} align="center" key={header.id}>
{
header.title
}
</TableCell>)
})
}
</TableRow>
但是我在这一行遇到错误:
header.id === “姓名” ?
显示的错误是:“应为赋值或函数调用,但看到的是表达式 no-unused-expressions”
我哪里错了?
我试过在两种情况下都在 TableCell 之前添加 return 位,但它给出了一个错误。
带主体的箭头函数可能需要 显式 return
语句,如果函数是 return一个值。没有主体的箭头函数(即没有 {}
)有一个 implicit return.
解决方案
Return整个三元表达式。
<TableRow>
{tableData.header.map((header) => {
return header.id === "name" ? ( // <-- return entire ternary expression
<TableCell style={{ width: 100 }} align="center" key={header.id}>
{header.title}
</TableCell>
) : (
<TableCell style={{ minWidth: 185 }} align="center" key={header.id}>
{header.title}
</TableCell>
);
})}
</TableRow>
这仍然是很多重复的代码,它可以更DRY。将三元转移到最少量代码的分支逻辑。我看到的唯一差异是 width
值,所以在那里分支。
<TableRow>
{tableData.header.map((header) => {
return (
<TableCell
style={{ width: header.id === "name" ? 100 : 185 }}
align="center"
key={header.id}
>
{header.title}
</TableCell>
);
})}
</TableRow>
所以我用这段代码解决了这个问题:
<TableRow>
{
tableData.header.map(header => header.id === "name" ?
<TableCell style={{minWidth: 80}} align="center" key={header.id}>
{
header.title
}
</TableCell>
:
<TableCell style={{minWidth: 185}} align="center" key={header.id}>
{
header.title
}
</TableCell>
)
}
</TableRow>
我基本上删除了一些花括号并以某种方式得到了解决方案。
我正在尝试根据从地图函数收到的 ID 更改列宽。这是代码:
<TableRow>
{
tableData.header.map(header => {
header.id === "name" ?
(<TableCell style={{width: 100}} align="center" key={header.id}>
{
header.title
}
</TableCell>)
:
(<TableCell style={{minWidth: 185}} align="center" key={header.id}>
{
header.title
}
</TableCell>)
})
}
</TableRow>
但是我在这一行遇到错误:
header.id === “姓名” ?
显示的错误是:“应为赋值或函数调用,但看到的是表达式 no-unused-expressions”
我哪里错了?
我试过在两种情况下都在 TableCell 之前添加 return 位,但它给出了一个错误。
带主体的箭头函数可能需要 显式 return
语句,如果函数是 return一个值。没有主体的箭头函数(即没有 {}
)有一个 implicit return.
解决方案
Return整个三元表达式。
<TableRow>
{tableData.header.map((header) => {
return header.id === "name" ? ( // <-- return entire ternary expression
<TableCell style={{ width: 100 }} align="center" key={header.id}>
{header.title}
</TableCell>
) : (
<TableCell style={{ minWidth: 185 }} align="center" key={header.id}>
{header.title}
</TableCell>
);
})}
</TableRow>
这仍然是很多重复的代码,它可以更DRY。将三元转移到最少量代码的分支逻辑。我看到的唯一差异是 width
值,所以在那里分支。
<TableRow>
{tableData.header.map((header) => {
return (
<TableCell
style={{ width: header.id === "name" ? 100 : 185 }}
align="center"
key={header.id}
>
{header.title}
</TableCell>
);
})}
</TableRow>
所以我用这段代码解决了这个问题:
<TableRow>
{
tableData.header.map(header => header.id === "name" ?
<TableCell style={{minWidth: 80}} align="center" key={header.id}>
{
header.title
}
</TableCell>
:
<TableCell style={{minWidth: 185}} align="center" key={header.id}>
{
header.title
}
</TableCell>
)
}
</TableRow>
我基本上删除了一些花括号并以某种方式得到了解决方案。