javascript - 如何设置有条件的多个细节面板?
问题描述
我想有多个详细信息面板,但不知道先验有多少。于是我想到了传递取值为true或false的属性(expandibleDetails和showParameters):如果为真我要面板,如果为假不。问题是,如果我因为属性值为“false”而渲染 null,material-table 会给出错误“m-table-body-row.js:221 Uncaught TypeError: Cannot read property 'render' of null”。
detailPanel={expandibleDetails ? [{
tooltip: "Show Details",
render: (rowData) => {
return (
<div
style={{
display: 'flex',
height: '250px',
}}
>
<Textarea
id={`${ rowData.tableData.id }-details`}
value={rowData.details}
/>
</div>
);
},
}, showParameters ? {
tooltip: "Show parameters",
render: (rowData) => {
return (
<div>
<Textarea
id={`${rowData.tableData.id}-parameters`}
value={rowData.parameters}
/>
</div>
);
},
} : null] : []}
之后,我设置了一个不做任何事情但面板图标仍然出现的渲染方法,我不想要相关面板......
detailPanel={expandibleDetails ? [{
tooltip: "Show Details",
render: (rowData) => {
return (
<div
style={{
display: 'flex',
height: '250px',
}}
>
<Textarea
id={`${ rowData.tableData.id }-details`}
value={rowData.details}
/>
</div>
);
},
}, showParameters ? {
tooltip: "Show parameters",
render: (rowData) => {
return (
<div>
<Textarea
id={`${rowData.tableData.id}-parameters`}
value={rowData.parameters}
/>
</div>
);
},
} : {render: () => {} : []}
另外这段代码似乎很难读,有没有办法让它变得更好?我没有找到办法,我创建了一个外部函数,然后传递给 detailPanel 但我得到了错误......
const detailedArray = () => {
let arr= [];
if (expandibleDetails) {
arr.push({
tooltip: "Show Details",
render: (rowData) => {
<div
style={{
display: 'flex',
height: '250px',
}}
>
<Textarea
id={`${ rowData.tableData.id }-details`}
value={rowData.details}
/>
</div>
},
});
}
if (showParameters) {
arr.push(...)
}
return arr;
};
detailPanel={detailArray}
同时,感谢任何可以帮助我的人
解决方案
好的,我找到了方法。我张贴它以防有人需要它。我使用了扩展运算符,以便在为真的情况下获取一个对象,或者在为假的情况下获取任何对象。
detailPanel={expandibleDetails ? [{
tooltip: "Show Details",
render: (rowData) => {
return (
<div
style={{
display: 'flex',
height: '250px',
}}
>
<Textarea
id={`${ rowData.tableData.id }-details`}
value={rowData.details}
/>
</div>
);
},
},
...(showParameters ? [{
tooltip: "Show parameters",
render: (rowData) => {
return (
<div>
<Textarea
id={`${rowData.tableData.id}-parameters`}
value={rowData.parameters}
/>
</div>
);
},
}] : {}),
推荐阅读
- flutter - 由于不支持的依赖项,Flutter web 失败
- computer-vision - 如何处理文本 - “程序入口点 SHGetKnownFolderPath 无法位于动态链接库 SHELL32.dll 中。”?
- python - 关于使用 Selenium 和 Python 点击链接的问题
- postgresql - 仅更新 POSTGRESQL 中日期字段中的 YEAR
- python - 在 Python 中:转换时的不同值
- sql - 远离错误:没有唯一约束与引用表的给定键匹配
- sql - 为什么我在更新员工工资时触发错误?
- c# - 如何从 UseStatusCodePagesWithReExecute 中排除某些路由?
- powershell - 添加 ScriptMethod Helper 以查询 PSCustomObject
- c++ - 使用每个参数调用函数