<svg width="64" height="78">
<use href="/images/svg/icons.svg#logo-vitrine" />
</svg>
我的componentDidMount只是通过读取数据库来修复页面,就像页面上的帖子有人删除帖子会更新页面一样。所以我可以在get请求中调用this.componentDidMount(),它会起作用,但是每当我在发布请求中使用它时,我都会收到“无法读取未定义的属性'componentDidMount'”
那么,如何在没有此错误的情况下实现我想要的?
答案 0 :(得分:1)
您在这里做出的反应基本上是错误的。为什么要手动调用组件事件生命周期?
更改组件行为状态的方法是通过setState
或useState
钩子或遵循Redux等通量架构的其他状态管理库,
尽管由于this
导致错误bind
不受限制,但您不应使用这种方式。我强烈建议您阅读基本的反应概念。
答案 1 :(得分:0)
编辑:Karthik是正确的,您必须将此绑定到handleDelete函数。
this
关键字随上下文的变化而变化,要知道其确切指向的内容和时间是有些棘手的。在这种情况下,错误实际上意味着this
未定义,可能是因为在Promise中对其进行了引用。通常,您要做的是在某个指向this
的地方创建引用,以引用我们想要的内容(在本例中为您的组件):
handleDelete(event) {
const self = this;
axios.post('http://localhost:8080/removeActor', {
'name': event.target.value
})
.then((response) => {
self.componentDidMount();
})
event.preventDefault();
}
您还可以考虑将componentDidMount
中的代码移到新函数中,因为componentDidMount
是React组件生命周期的一部分,除非您真正知道自己的意思,否则明确地调用它不是一个好主意。在做。