React Native 中未处理的承诺拒绝
2017-11-07
351
我收到未处理的承诺拒绝警告,并且未定义不是对 this.state.gridData[0].brand 进行评估的对象
这部分代码有问题
async componentDidMount() {
const bikes = await fetchVehicleBasedOnType(VEHICLE_TYPES.TWO_WHEELER);
this.setState({ bikes });
const gridData = _.uniqBy(bikes, 'brand').map((K) => {
return { brand: K.brand, logo: K.brand_logo };
});
this.setState({ gridData,
selectedBikeBrand: this.state.gridData[0].brand,
selectedBikeBrandLogo: this.state.gridData[0].logo,
loading: false
});
const listData = bikes
.filter(item => item.brand === this.selectedBrand)
.map(({ model, image }) => ({ model, modellogo: image }));
this.setState({ listData });
}
有人可以建议编辑和修复以使此代码更好吗..
2个回答
您没有将
gridData
分配给
this.state
,因此推测
this.state.gridData
是
undefined
。只需删除
this.state
的使用即可。
在尝试访问
gridData[0]
上的属性之前,您还应该检查以确保
gridData
不为空。
const gridData = _.uniqBy(bikes, 'brand').map((K) => {
return { brand: K.brand, logo: K.brand_logo };
});
const firstItem = gridData[0] || { };
this.setState({
gridData,
selectedBikeBrand: firstItem.brand,
selectedBikeBrandLogo: firstItem.logo,
loading: false
});
JLRishe
2017-11-07
设置状态时,您有 girdData[0].brand。
Raj
2017-11-07