【问题标题】:Type Error: undefined is not and object, error comes while mapping the data from JSON类型错误:未定义不是对象,从 JSON 映射数据时出现错误
【发布时间】:2019-01-13 09:50:35
【问题描述】:

我首先过滤来自 API 的数据,然后将其存储在 const 中。我正在尝试映射存储在常量中的那个对象,但我遇到了这个错误 我的代码是:

secondPicker = () => {
    if (this.state.PickerValueHolder === 'Punjab') {
        const space = this.state.myData.filter(x => x.label === 'Punjab');
        console.log(space.children);
        return (<Picker
                style={styles.dropDown}
                label="Select City"
                onValueChange={(itemValue, itemIndex) => this.setState({ PickerValueHolderCity: itemValue })}
                selectedValue={this.state.PickerValueHolderCity}
            >
                {space.children.map((item, key) => (
                    <Picker.Item label={item.label} value={item.value} key={key} />)
                )}
            </Picker>
        )
    }
    else{return} 
}

当我控制台日志“空间”时,我得到以下数据:

我从中获取数据的 API 是:https://retailsolution.pk/api/countrywise

【问题讨论】:

  • filter 将返回一个数组,然后您尝试访问该数组的children 属性并在其上使用map。这真的是你想要的吗?不应该只是space.map(...)吗?
  • @Tholle 我已经添加了我的空间常数数据的图片。你不认为“space.children.map”是一种正确的方法吗?
  • 太好了,谢谢。我会添加一个答案。

标签: javascript reactjs react-native typeerror


【解决方案1】:

您正在将数组中具有标签Punjab 的所有元素过滤到一个新数组中。如果您想使用这种方法,您必须访问此新数组中的第一个元素,并通过该对象中的children 数组访问map

space[0].children.map((item, key) => ( /* ... */ ))

您也可以使用find,以便在space 变量中而不是数组中获得所需的对象。

secondPicker = () => {
  if (this.state.PickerValueHolder === "Punjab") {
    const space = this.state.myData.find(x => x.label === "Punjab");

    return (
      <Picker
        style={styles.dropDown}
        label="Select City"
        onValueChange={(itemValue, itemIndex) =>
          this.setState({ PickerValueHolderCity: itemValue })
        }
        selectedValue={this.state.PickerValueHolderCity}
      >
        {space.children.map((item, key) => (
          <Picker.Item label={item.label} value={item.value} key={key} />
        ))}
      </Picker>
    );
  } else {
    return null;
  }
};

【讨论】:

  • 伟人..!!添加 [0] 对我有用,不确定其他方法,但第一种方法有效
  • @abbujan 太好了!任何一个都可以,这更多的是品味问题。
猜你喜欢
  • 1970-01-01
  • 2021-10-07
  • 2015-09-07
  • 2022-11-27
  • 2021-05-31
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
相关资源
最近更新 更多