Я пытаюсь написать React Component с помощью DataTable и response-switch.
Кажется, это работает, но когда я вижу консоль разработчика, появляется ошибка:
Предупреждение: Can ' выполнить обновление состояния React для неустановленного компонента. Это неоперация, но она указывает на утечку памяти в вашем приложении. Чтобы исправить, отмените все подписки и асинхронные задачи в методе componentWillUnmount.
Ошибка отображается только при «перетаскивании» коммутатора. Если я только нажму на переключатель, ошибки не будет.
import React from 'react';
import { authenticationService } from '../../helpers/AuthenticationService';
import axios from 'axios';
import DataTable from 'react-data-table-component';
import Switch from "react-switch";
class ProductEshop extends React.Component {
constructor(props) {
super(props);
this.state = {
isCancelled: false,
data: [],
checked: false
}
}
handleButtonClick = (state, row) => {
this.setState({
data: this.state.data.map((item, index) =>
item.eshopId == row.eshopId ? { ...item, isActive: !item.isActive } : item,
)
})
};
componentDidMount() {
const currentUser = authenticationService.currentUserValue;
axios.get('/api/product/' + this.props.id + '/eshops', { headers: { "Authorization": `Bearer ${currentUser.token}` } }).then(res => {
this.setState({ data: res.data });
}).catch(err => {
console.log(err);
});
}
render() {
const columns = (clickHandler => [
{
cell: (row) => <Switch onChange={(e) => clickHandler(e, row)} checked={row.isActive} />
},
{
name: 'Název',
selector: 'name',
sortable: true,
}
]);
return (<div>
<DataTable
title="Products"
data={this.state.data}
columns={columns(this.handleButtonClick)}
onRowSelected={this.handleChange}
paginationComponentOptions={this.state.paggination}
pagination
dense
/>
</div>)
}
}
export default (ProductEshop)
Может кто-нибудь помочь, пожалуйста?
ОБНОВЛЕНИЕ: ошибка создана в handleButtonClick