【问题标题】:Unhandled promise rejection in react native反应原生中未处理的承诺拒绝
【发布时间】:2018-04-19 10:11:32
【问题描述】:

我收到未处理的承诺拒绝的警告,并且 undefined 不是评估 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 });
  }

有人可以建议编辑和修复以使此代码更好..

【问题讨论】:

  • 你拼错了gridData
  • 我已经更正了它,但我仍然有同样的问题@JLRishe

标签: javascript react-native


【解决方案1】:

您在设置状态时有 girdData[0].brand。

【讨论】:

  • 那么我应该在哪里给它你可以建议如何
  • 给什么?恐怕我没有跟上。
  • 我需要将 selectedBikeBrand 分配为 gidData[0].Brand 所以我应该怎么做请建议
【解决方案2】:

您没有将gridData 分配给this.state,因此推测this.state.gridDataundefined。只需删除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
});

【讨论】:

  • 我对 Listdata 做了同样的事情我有些问题你可以看看这个链接https://jsfiddle.net/uw0nhh23/
  • @nadeshoki 我很确定this.selectedBrand 没有指任何东西。尝试改用firstBrandItem.brand
  • 我这样做了仍然有同样的问题请看这里:https://jsfiddle.net/vn9eouuu/
  • @nadeshoki 同样的问题?你还没有说问题是什么。
  • 非常感谢它现在的工作是同样的错误再次感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多