我想用ant-design里的远程加载数据table,可是一直报错,试了很久还是不知道怎么解决。。。

export default class PCContainMainTable extends React.Component {
  constructor(){
    supper();
    this.state = {
      data: [],
      pagination: {},
      loading: false,
    };
  }
   
  handleTableChange(pagination, filters, sorter){
    const pager = { ...this.state.pagination };
    pager.current = pagination.current;
    this.setState({
      pagination: pager,
    });
    this.fetch({
      results: pagination.pageSize,
      page: pagination.current,
      sortField: sorter.field,
      sortOrder: sorter.order,
      ...filters,
    });
  }
  fetch = (params = {}) => {
    console.log('params:', params);
    this.setState({ loading: true });
    reqwest({
      url: 'https://randomuser.me/api',
      method: 'get',
      data: {
        results: 10,
        ...params,
      },
      type: 'json',
    }).then((data) => {
      const pagination = { ...this.state.pagination };
      // Read total count from server
      // pagination.total = data.totalCount;
      pagination.total = 200;
      this.setState({
        loading: false,
        data: data.results,
        pagination,
      });
    });
  }
  componentDidMount() {
    this.fetch();
  }
  render() {
    return (
      <Table columns={columns}
        rowKey={record => record.registered}
        dataSource={this.state.data}
        pagination={this.state.pagination}
        loading={this.state.loading}
        onChange={this.handleTableChange}
      />
    );
  }
}

图片描述

这个报错如何解决呢,各位大神请支个招吧~~~

阅读 3.4k
1 个回答
新手上路,请多包涵

你这报错是this的指向问题,用class创建react组件,render里调用的handleTableChange方法,内部的this指向的不是这个组件实例。有两种解决办法,一种是采用箭头函数的写法,另外一种是手动的修改this的执行,采用this.handleTableChange.bind(this),在render中写和在constructor中写都可以。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题