reactjs - 切换复选框并重新加载内容时,Ant Design Table 不会立即更新
问题描述
帮助朋友找到错误。
有一个表,数据是从后端加载的,数据中有一个boolean variable
,在表中以checkbox
. 当checkbox
更改时,函数会更改 中变量的状态database
并重新加载数据。但该表仅第二次重绘。根据这一点,checkbox
函数执行后不会更新和记录样式。
指出在哪里看?
class UsersList extends Component {
constructor(props) {
super(props);
this.state = {
users: [],
isLoading: false
};
this.onChange = this.onChange.bind(this);
}
loadUsersList() {
let promise = getAllUsers();
this.setState({
isLoading: true
}
);
if (!promise) {
return;
}
promise
.then(response => {
this.setState({
users: response,
isLoading: false
})
}).catch(error => {
this.setState({
isLoading: false
})
});
}
componentDidMount() {
this.loadUsersList();
}
onChange(e) {
setEnabled(e.target.value, e.target.checked).then(this.loadUsersList());
notification.success({
message: 'Successfully',
description: "Enabled field of " + e.target.value + " change to " + e.target.checked,
});
}
render() {
const columns = [{
title: 'Id',
dataIndex: 'id',
key: 'id'
}, {
title: 'Name',
dataIndex: 'name',
key: 'name'
}, {
title: 'Email',
dataIndex: 'email',
key: 'email'
}, {
title: 'Registered',
dataIndex: 'registered',
key: 'registered'
}, {
title: 'Enabled',
dataIndex: 'enabled',
key: 'enabled',
render: (text, record) => (
<Checkbox checked={record.enabled}
onChange={this.onChange}
value={record.name}/>
)
}, {
title: 'Roles',
dataIndex: 'roles',
key: 'roles'
}
];
return (
<Table rowClassName={(row) => row.enabled ? '' : 'disabled'}
rowKey='id' columns={columns}
dataSource={this.state.users}
loading={this.state.isLoading}/>
)
}
}
export default UsersList;
解决方案
我不确定这里最好的解决方案是什么,但由于您使用的是 columns 数组并且没有明确指定下的列,那么您不妨将它放在一个在用户与您的 UI 交互时更新的方法中
使用它来访问表中的列标记,将其放在您的班级之外
const { Column, ColumnGroup } = Table;
推荐阅读
- html - 当绝对定位的文本区域增长/溢出时如何使父容器增长
- swift - 如何旋转并向从 Reality Composer 加载的实体添加线性力?
- java - 修复保持数据正确组织而不重复
- gridview - Kartik GridView 组:在 Mpdf 中不起作用
- python - 如何检查 LSTM 的准确性?
- android - 另一个视图语法的约束布局bottomToTop内的膨胀布局
- javascript - Javascript 中的上一个按钮不起作用
- marklogic - 是否可以在 DHF 流文件中使用令牌替换?
- python-3.x - Tkinter 拖放期间的堆栈溢出
- spring-boot - 从 Spring Boot 应用程序属性调用 Elastic APM 属性