开发者问题收集

React native,如果值为空,如何不从 API 调用该值?

2020-11-22
701

在我的这个 API 中 我想从推荐的配置中获取值,但有些值为空,所以我的应用程序给了我一个错误:

null is not an object

这是我的代码:

let page1 = this.state.dataSource1.map((val, key) => {
    // if (val.platforms[0].requirements_en.minimum != null) {

    // }
    return (
        {val.platforms[0].requirements_en.recommended ==! null ?
            <Text style={styles.name}>minimal configuration : {val.platforms[0].requirements_en.recommended}</Text>
            :
            <Text>Nothing</Text>
        }
    )
})

我想说,如果值不为空,就把数据发给我,否则就发一个简单的文本,但它不起作用……

1个回答

您的代码中存在一些问题。

首先,您返回了一个对象,但未指定键。
因此,您要么需要添加一个,要么更可能是错误,您需要删除 return 中的花括号。

其次,您的拼写错误是 ==! ,而不是 !==

第三,关于您的问题,您需要使用可选链运算符检查 API 返回的每个元素是否存在,如下所示: val?.platforms[0]?.requirements_en?.recommended
稍微扩展一下,如果 ?. 之前的部分为 nullundefined ,则可选链运算符将返回 undefined
就您而言,有时 requirements_en 为空,因此出现错误。

let page1 = this.state.dataSource1.map((val, key) => {
  return val?.platforms[0]?.requirements_en?.recommended ? (
    <Text key={key}>
      minimal configuration: {val.platforms[0].requirements_en.recommended}
    </Text>
  ) : (
    <Text>Nothing</Text>
  )
})
Valentin Briand
2020-11-22