无法运行componentDidMount说未定义?

时间:2019-10-30 02:09:53

标签: reactjs

<svg width="64" height="78">
  <use href="/images/svg/icons.svg#logo-vitrine" />
</svg>

我的componentDidMount只是通过读取数据库来修复页面,就像页面上的帖子有人删除帖子会更新页面一样。所以我可以在get请求中调用this.componentDidMount(),它会起作用,但是每当我在发布请求中使用它时,我都会收到“无法读取未定义的属性'componentDidMount'”

那么,如何在没有此错误的情况下实现我想要的?

2 个答案:

答案 0 :(得分:1)

您在这里做出的反应基本上是错误的。为什么要手动调用组件事件生命周期?

更改组件行为状态的方法是通过setStateuseState钩子或遵循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组件生命周期的一部分,除非您真正知道自己的意思,否则明确地调用它不是一个好主意。在做。