javascript - api调用后更新组件的正确方法是什么

标签 javascript reactjs

假设我有这个组件,它将定期从 API 获取所有数据。

//在父组件上

constructor(props) {
  super(props);
  this.state = {
    datas: [],
  }
  this.apiCall = this.apiCall.bind.this
}

apiCall(){
  //fetch data here
  this.setState({
    datas: //result from fetch
  })
}

ComponentDidMount(){
  this.interval = setInterval(() => this.apiCall(), 10000);
}

handleEditData(){
  //api call, edit one data in server using POST
}

...
<ChildComponent onEdit={this.handleEdit}/>

子组件编辑数据时该怎么办?或者我应该在handleEditData中放入什么?

  1. 我是否应该通过向 api 发送 POST 来编辑一项数据,然后使用 handleEdit 中的 setState 手动更新本地状态?
  2. 或者我应该发送 POST 到 api,然后调用 apiCall 函数来获取新数据,这些数据会更改其状态并重新渲染?

谢谢

最佳答案

这是一个有趣的问题,它不是一个关于 React 的问题,而是一个资源管理问题。要问的问题是数据在做什么。如果您有需要记录的数据,则应使用 API 存储数据。如果数据要在您的应用程序中重复使用并且您已经拥有它,为什么不在原位使用它呢?它减少了您的调用(从而使应用程序更加高效),并且在此过程中减少了一个损坏点。

重申一下:当你设计一个系统时,在涉及更多移动部件之前,你应该先考虑局部情况。我只是简单地冒泡数据并将 setState 与本地对象一起使用。

关于javascript - api调用后更新组件的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982546/

相关文章:

reactjs - 如何解决 @typescript-eslint/no-var-requires 错误。添加@axe-core/react 时出错

javascript - 未找到规则 'react-hooks/exhaustive-deps' 的定义

reactjs - 如何从 React Typescript 中的通用数组中删除项目?

reactjs - useEffect 中的状态总是指 React Hooks 的初始状态

javascript - 带有AngularJS的Spring Security CAS grails插件,登录页面不显示

javascript - 在 jQuery 中我的函数不起作用

javascript - 如何顶部对齐 ExtJS 表格布局中的两个区域?

reactjs - Azure AD B2C 未获取访问 token

javascript - 为 ng-form 手动将 $dirty 设置为 false

javascript - 生成器完成后,以数组形式返回连续产生的值