javascript - reactjs render() 在 promise 解决后未触发 this.setState 被重新分配

标签 javascript reactjs components render setstate

我在下面有一个函数,它设置一个 InitialState,然后使用 componentWillMount 和 fetchData 进行 api 调用以分配数据 this.state。然而,当 this.setState() 完成时,渲染函数不会被新的 this.state 数据触发,我的函数如下:

var Home = React.createClass({
  getInitialState: function() {
    return {
      city: '',
      weather: '',
      temperature: 0,
      humidity: 0,
      wind: 0,
    }
  },
  fetchData: function() {
    apiHelpers.getCityInfo()
    .then(function (response){
      this.setState({ data: response
      })
    }.bind(this))
  },
  componentWillMount: function(){
    this.fetchData();
  },
  render: function () {
    return (
      <div className="container">
      <Cities data={this.state.data} />
      </div>
    )
  }
});

最佳答案

初始状态没有数据。将您的代码更改为-

fetchData: function() {
    apiHelpers.getCityInfo()
     .then(function (response){
      this.setState({
          city: response.city,
          weather: response.weather,
          temperature: response.temperature,
          humidity: response.humidity,
          wind: response.wind,
       })
    }.bind(this))
  },

期望您的 api 响应包含城市、天气等对象......

关于javascript - reactjs render() 在 promise 解决后未触发 this.setState 被重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39956925/

相关文章:

javascript - 如果用户在文本区域中,可以暂停定时刷新

php - 我为 strip &lt;script&gt;&lt;/script&gt; 标签创建了这个表单,但是这个表单不起作用

javascript - 从接口(interface)的键分配类型

javascript - 在 Material <md-tab-group> 中使用 Angular 2 组件

java - 通过某些组件名称模式将组件/类加载到 ArrayList 中

javascript - Discord.js 将成员移动到不同的语音 channel

javascript - 将函数引用传递给函数失败

javascript - For 循环在 ComponentDidMount 中遍历一个不工作的对象

javascript - 扩展和重新排序对象数组

Coldfusion,你提供的符号 [method_name] 不是函数