javascript - 在函数中调用 componentDidMount 是不好的做法吗?

标签 javascript reactjs

我的 ReactJS 应用程序中有一个函数,它向服务器发送 axios POST 请求以从我的数据库中删除某个元素。

基本上,我有一个列表,我可以从中删除某些项目,但是,React 只会在刷新页面后显示通过删除元素所做的更改。

这是我使用的删除函数:

handleDelete (event) {
    var id = event.target.id;
    axios.get('todos/delete?id='+id)
        .then(function(response) {
        });
    this.componentDidMount();
}

componentDidMount() 从我的数据库中获取数据并将其存储在状态中。 我发现,如果我在函数中调用 componentDidMount,它会立即显示更改,但是,我觉得这是一种相当不专业的方式来完成我想要实现的目标。 因此我的问题是:

  • 在另一个函数中调用生命周期方法是否被认为是不好的做法?
  • 是否有更好的方法让页面立即显示更改?

最佳答案

嗯,你真的不应该那样做。

componentDidMount 只是组件的生命周期方法。你想要的是这个结构:

fetchData () { ... };

handleDelete (event) {
    var id = event.target.id;
    axios.get('todos/delete?id='+id)
        .then(function(response) {
        });
    this.fetchData();
}

componentDidMount() {
  this.fetchData();
}

这是一个简化的示例,但您明白了。

注意:在 handleDelete 函数中,如果您希望 fetchData 调用发生在 axios 调用您的之后应该是 then

里面的代码
axios.get('todos/delete?id='+id)
     .then(() => {
       this.fetchData();
     }); 

关于javascript - 在函数中调用 componentDidMount 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48187268/

相关文章:

javascript - React.js 理解 setState

javascript - 为什么从 Backbone 中的自定义 BaseView 扩展时, 'events' 没有绑定(bind)到 View ?

javascript - 单击选择关于 html 的选项后如何重定向到新窗口?

javascript - 在 ios 上运行后台任务 - react native 0.60

reactjs - 发现错误 : Method “props” is only meant to be run on a single node. 2

javascript - 以 react-hook-form 的 onChange 输入

javascript - 如何使用一组复选框运行 forEach

Javascript localStorage 未接收来自表单的输入

javascript - Angular 是否接受带有连字符的属性?

javascript - 将 html 标签插入到替换函数中