在componentDidMount函数中有个调用后台接口方法,并把获取的数据设置到state中,当在render方法中输出this.state.data时,前两次会输出一个空,最后一次才会有后台的数据。请问下如何让它不render多次?
代码如下:
componentDidMount() {
this.fetch();
}
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,
});
});
};
render() {
console.log(this.state.data);
return (
<Table
columns={columns}
rowKey={record => record.login.uuid}
dataSource={this.state.data}
pagination={this.state.pagination}
loading={this.state.loading}
onChange={this.handleTableChange}
/>
);
}
输出截图:
这种方式无法避免,是必须得
render
3次的初始化一次,请求数据前的
loading
一次,数据返回后又一次