当我的组件加载时,我调用我的 webApi,它返回一个客户端数组。我需要将该数组加载到状态,然后用客户端列表呈现我的屏幕。
所以,在我的构造函数中,我创建了我的默认状态。
export default class Clients extends Component {
constructor(props) {
super(props);
this.state = {
clients: [{
id: null,
username: null,
name: null
}]
}
然后,我需要尽快调用我的 api,填充我的状态,以便我的列表可以显示在屏幕上。所以我将 api 调用和 setState 放入我的componentWillMount
componentWillMount() {
const request = {
method: 'GET',
URL: `${Server.ApiURL}/api/admin/clients`
};
console.log('Calling fetch....', this.state);
fetchData(request)
.then((data) => {
console.log("Data recieved!", data);
this.setState(
{ clients : data });
});
}
我说“已收到数据”的日志行显示了我在控制台中所期望的数据。与我在我的状态中定义的对象匹配的对象数组。
但是,当我尝试 setState 时出现错误。
警告:无法在未安装的组件上调用 setState(或 forceUpdate)。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 componentWillUnmount 方法中的所有订阅和异步任务。
我确定我以前做过。但我不确定为什么我会收到这个错误。我尝试填充状态的方式是否不正确?
我的想法是我在构造函数中设置状态的初始状态,然后在componentWillMount中填充我的数据。
为什么我会收到错误,我应该如何实现这一点?