如何解决MobX ReactJS AntD更新不会重新呈现
因此,我尝试使用ReactJS和MobX更改AntD表中的某些表数据。 MobX中的数据可观察到的变化,但是在我说....调整页面大小并重新渲染表之前,该表不会重新呈现更新。我已经在CodeSandBox上重新创建了我的问题-它不是确切的数据类型,但这是我所遇到的确切问题,有什么想法吗?
https://codesandbox.io/s/remove-items-from-mobx-array-forked-3nybr?file=/index.js
@action
change = (key) => {
this.data
.filter(item => key === item.key)
.forEach(piece => {
piece.key = 10;
});
console.log(this.data);
};
const FooTable = () => {
const columns = [
{
title: "ID",dataIndex: "key"
},{
title: "Name",dataIndex: "name"
},{
title: "Last Name",dataIndex: "lastName"
},{
title: "Actions",render: (text,record) => {
return (
<Button
type="link"
icon="delete"
onClick={() => tableStore.change(record.key)}
>
Delete
</Button>
);
}
}
];
return uSEObserver(() => {
return <Table columns={columns} dataSource={tableStore.data} />;
});
};
解决方法
由于AntD Table
本身不是观察者,因此您需要在数据上使用toJS
,然后再将其传递给AntD。
import { toJS } from "mobx";
// ...
const FooTable = () => {
const columns = [ ... ];
return useObserver(() => {
return <Table columns={columns} dataSource={toJS(tableStore.data)} />;
});
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。