Вы мутируете data
, что не заставляет ваш стол перерисовываться. Ваш пример будет работать, если вы добавите this.forceUpdate()
до и в конце setTimeout
. Это некрасивое исправление, но оно может помочь понять случай root.
Лучшее решение - извлечь действия в собственный компонент с собственным loading
состоянием:
const Actions = props => {
const [loading, setLoading] = useState(false);
return (
<span>
{loading ? (
<Icon type="loading" spin />
) : (
<a
href="#"
onClick={() => {
setLoading(true);
setTimeout(setLoading, 2000);
}}
>
Reload
</a>
)}
</span>
);
};
И затем столбец ваших действий становится:
<Column
title="Action"
key="action"
render={(text, record) => <Actions />}
/>