javascript - 如何根据 API 数据设置初始 React 状态?

标签 javascript reactjs

我设置了一个 rest API 后端。我想在组件的 getInitialState 函数内设置值,但我不知道如何填充我需要返回的对象,因为我使用的是异步 http 请求。正如预期的那样,我返回的对象具有未定义的值。我该如何解决这个问题?

我现在正在使用 fetch(老实说,可以切换到任何其他库)。我不知道如何在异步调用返回某个值之后而不是在它发生之前调用 getInitialState

import React from 'react';
import 'whatwg-fetch';

export default class IndexPage extends React.Component {

  render() {

    // I basically need to call getInitialState after the last promise has been resolved
    fetch('https://localhost:3000/api/aye')
    .then(function(response) {
      return response.json();
    })
    .then(function(json) {
      // Need to return some values from this.
    });

    return (
      <div>
        <h1>{this.state.jsonReturnedValue}</h1>
      </div>
    );
  }
}

提前致谢!

最佳答案

您应该调用 this.setState 以更改 state

export default class IndexPage extends React.Component {

  constructor() {
    super();
    
    this.state = {
      jsonReturnedValue: null
    }
  }
  
  componentDidMount() {
    fetch('https://localhost:3000/api/aye')
      .then(response => response.json())
      .then(json => {
        this.setState({ jsonReturnedValue: json });
      });
  }
  
  render() {
    return (
      <div>
        <h1>{ this.state.jsonReturnedValue }</h1>
      </div>
    );
  }
}

关于javascript - 如何根据 API 数据设置初始 React 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223306/

相关文章:

javascript - 在 React 中渲染来自 Firebase 的数据

security - react +路由+安全

javascript - 有没有基于 jQuery 的基本/简单灯箱/叠加库?

javascript - 有没有办法在 Chrome 开发者工具中显示所有定义的类名?

unit-testing - 难以对注入(inject)多个存储的 MobX 观察者组件进行单元测试

javascript - Next.js,重定向到getServerSideProps里面的404页面

javascript - React Native - 带警报的 BackHandler

java - 将输入类型 ="image"提交给另一个 servlet 未能返回任何参数

javascript - 这个 jQuery 验证代码有什么问题? regexp.exec(值)

reactjs - 如何在React应用程序中全局捕获错误