state = {
moduleId: "1",//模块编号
}
columns = [
{ // 当moduleId为7时不展示
title: '缩略图',
dataIndex: 'img',
key: 'img',
hideInTable:true,
render: (_, record) => {
return <img src={record.img} alt="" className={style.Abbreviate} style={{ width: 40, height: 40 }} />
}
},
{ // 当moduleId为5时不展示
title: '所属页面',
dataIndex: 'description',
key: 'description',
},
{
title: '描述',
dataIndex: 'description',
key: 'description',
},
]
columns = [
this.state.moduleId!=='7' && { // 当moduleId为7时不展示
title: '缩略图',
dataIndex: 'img',
key: 'img',
hideInTable:true,
render: (_, record) => {
return <img src={record.img} alt="" className={style.Abbreviate} style={{ width: 40, height: 40 }} />
}
},
{ // 当moduleId为5时不展示
title: '所属页面',
dataIndex: 'description',
key: 'description',
},
{
title: '描述',
dataIndex: 'description',
key: 'description',
},
].filter(item => item !== false)
当我更改了moduleId,页面并没有变化,发现是因为columns 中使用到的this.state.moduleId一直没有变化,一直是初始值
你可以写个方法来获取columns,比如getColumns = () => {},在render里调用这个方法来获取列
let id = '7'
const data = [
{
name: '小明',
sex: '男',
age: '12',
class: '4年级1班'
}
]
const columns = [
{
title: '姓名',
dataIndex: 'name'
},
id !== '7' && {
title: '性别',
dataIndex: 'sex'
},
{
title: '年龄',
dataIndex: 'age'
},
{
title: '班级',
dataIndex: 'class'
}
].filter(Boolean)
if(id==7) columns=columns.filter((item)=>{return item.dataIndex! ="img"})