无法在尚未安装的组件上调用 setState,即使它已经安装?
Can't call setState on a component that is not yet mounted, even though it is?
大家看到错误了,Warning: Can't call setState on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to ``this.state`` directly or define a
state = {}; class property with the desired state in the ImageTableItemComponent component.
我见过类似的问题,但没有对我有帮助的答案。这是我的构造函数:
export default class ImageTableItemComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
data : [], // ****** This one's the problem *****
collapsible : false,
}
this.loadImagesWithTags();
}
这里是 loadImagesWithTags()
函数,我在这里使用 setState
:
loadImagesWithTags() {
const imagesAndTags = new ImagesAndTags();
imagesAndTags.getImagesWithTags()
.then(imagesAndTags => {
const data = this.convertDataToObject(imagesAndTags)
this.setState({data: data,}) // ****** Here I use setState *****
})
.catch(reason => {
console.error('Error loading tags:', reason)
});
}
我以前用过同样的方法,没有收到任何错误。是否存在错误或过时的依赖关系或其他原因,我在这里没有看到的任何东西都会触发此错误?我已经删除了代码中与 collapsible: false,
有关的所有内容,因此我知道错误与数据有关。感谢任何帮助。
您不应在构造函数中的异步操作后调用分配状态的方法。相反,运行 componentDidMount()
中的方法
componentDidMount() {
this.loadImagesWithTags();
}
我认为这个错误误导了你。并不是组件没有挂载,而是你在 React 组件生命周期中的错误时刻执行了状态更新。
大家看到错误了,Warning: Can't call setState on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to ``this.state`` directly or define a
state = {}; class property with the desired state in the ImageTableItemComponent component.
我见过类似的问题,但没有对我有帮助的答案。这是我的构造函数:
export default class ImageTableItemComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
data : [], // ****** This one's the problem *****
collapsible : false,
}
this.loadImagesWithTags();
}
这里是 loadImagesWithTags()
函数,我在这里使用 setState
:
loadImagesWithTags() {
const imagesAndTags = new ImagesAndTags();
imagesAndTags.getImagesWithTags()
.then(imagesAndTags => {
const data = this.convertDataToObject(imagesAndTags)
this.setState({data: data,}) // ****** Here I use setState *****
})
.catch(reason => {
console.error('Error loading tags:', reason)
});
}
我以前用过同样的方法,没有收到任何错误。是否存在错误或过时的依赖关系或其他原因,我在这里没有看到的任何东西都会触发此错误?我已经删除了代码中与 collapsible: false,
有关的所有内容,因此我知道错误与数据有关。感谢任何帮助。
您不应在构造函数中的异步操作后调用分配状态的方法。相反,运行 componentDidMount()
componentDidMount() {
this.loadImagesWithTags();
}
我认为这个错误误导了你。并不是组件没有挂载,而是你在 React 组件生命周期中的错误时刻执行了状态更新。