首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ReactJS组件何时应该进行AJAX调用以从属性更新状态?

ReactJS组件何时应该进行AJAX调用以从属性更新状态?
EN

Stack Overflow用户
提问于 2015-06-08 16:40:26
回答 1查看 8.8K关注 0票数 19

我有一个React组件,它显示一个实体的信息。实体的id是通过属性传入的。该组件在"componentDidMount“中启动AJAX调用以获取实体,并在调用完成/失败时更新状态。

除了组件不会在实体id更改时获取新数据(通过props)之外,这种方法工作得很好。

我尝试过在"componentWillReceiveProps“中启动一个调用,但在那个阶段,组件仍然设置了旧的属性。我必须将nextProps传递给AJAX调用方法,但这似乎并不正确。

让组件异步更新其状态以响应属性更改的最好/最干净的方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-12-01 21:26:06

我也是个新手,所以Flux架构对我来说有点吓人。我完全按照你说的做,使用componentWillMount通过AJAX加载初始数据,然后使用nextPropscomponentWillReceiveProps在属性发生变化时再次加载新数据:

代码语言:javascript
复制
var Table = React.createClass({
  getInitialState: function() {
    return { data: [] };
  },

  componentWillMount: function(){
    this.dataSource();
  },

  componentWillReceiveProps: function(nextProps){
    this.dataSource(nextProps);
  },

  dataSource: function(props){
    props = props || this.props;

    return $.ajax({
      type: "get",
      dataType: 'json',
      url: '/products?page=' + props.page + "&pageSize=" + props.pageSize
    }).done(function(result){
      this.setState({ data: result });
    }.bind(this));
  },

  render: function() {
    return (
      <table className="table table-striped table-bordered">
        <Head />
        <Body data={this.state.data}/>
      </table>
    );
  }
});
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30704585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档