【问题标题】:React - wait the end of a request using SuperagentReact - 使用 Superagent 等待请求结束
【发布时间】:2018-12-28 13:38:07
【问题描述】:

ComponentWillMount 中,我正在使用 Superagent 从 Node.js 获取数据。

  componentWillMount() {
    request.get("/appData").end((error, response) => {
      if (!error && response) {
        this.setState({ dataJSON: response.body });
      } else {
        console.log("There was an error fetching server", error);
      }
    });
  }

此数据保存在 this.state.dataJSON 中,以便在 render() 中呈现。

问题是render()setState() 生效之前被调用。 但是一旦setState() 更新了 dataJSON 的状态,就会再次调用渲染并渲染数据。

所以我问你一个解决方案,等待 dataJSON 的更新,以便仅在 dataJSON 更新时调用渲染。

【问题讨论】:

  • 为什么不在尚未获取数据时简单地显示一种加载图标?延迟渲染将显示一个空白页面。
  • 这是一个很好的解决方案,但我什至不知道该怎么做。
  • 假设您在构造函数中将state.dataJSON 初始化为null。然后在你的渲染中,你可以这样做:if (this.state.dataJSON===null) { return <div>Loading</div> } else { return <div>Your data</div> }
  • 是的,这就是我刚刚所做的,我会采用这个解决方案!谢谢

标签: reactjs request state wait superagent


【解决方案1】:

在 React (... yet) 中没有延迟渲染这样的事情。

你可以做两件事:

  • 在父组件中加载该状态,并仅在您拥有数据时安装子组件
  • 让图示组件的render() 检查它是否仍在加载,并显示加载消息,如果尚未准备好则返回null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2013-09-26
    • 2019-01-31
    相关资源
    最近更新 更多