Вы получаете эту ошибку, потому что вы пытаетесь изменить состояние не смонтированного компонента.Это может произойти, если обратный вызов вызван после того, как компонент был размонтирован из его родителя.
Вы можете отслеживать состояние монтирования компонента следующим образом:
import React, { Component } from 'react';
import { Card, CardHeader, CardBody, Button, Collapse } from 'reactstrap';
class MyComponent extends React.Component<any, any> {
mounted = false;
constructor(props) {
super(props);
this.toggle = this.toggle.bind(this);
this.state = {
collapse: false,
};
}
componentWillMount() { this.mounted = true; }
componentWillUnmount() { this.mounted = false; }
toggle() {
if(this.mounted) {
this.setState(({collapse}) => ({ collapse: !collapse }));
}
}
render() {
return (
<Card>
<CardHeader>
<Button color="link" onClick={this.toggle} className="float-right">
Click me to toggle collapse
</Button>
</CardHeader>
<Collapse isOpen={this.state.collapse}>
<CardBody>
The content being collapsed
</CardBody>
</Collapse>
</Card>
);
}
}
export default MyComponent;