为了账号安全,请及时绑定邮箱和手机立即绑定

React Native 防止未定义对象

React Native 防止未定义对象

哆啦的时光机 2021-12-02 16:56:47
我正在从 API 获取数据以根据 API 值显示图像。如果对象中有图像,以下代码可以完美运行。如果 API 项没有图像,应用程序会抛出“未定义不是对象”错误。<View> <Image source={{uri:props.enclosures[0].url}} style={styles.mainPhoto} /></View>我已尝试使用以下代码先检查该值是否存在,但如果 API 项没有图像,它仍会引发完全相同的错误。<View>{props.enclosures[0].url ? <Image source={{uri:props.enclosures[0].url}} style={styles.mainPhoto} /> : <Text>No Image</Text>}</View>
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

如果要访问嵌套对象的多个属性,则应检查所有内容,如下所示


<View> // Checking everthing so it never throws an error

    {props.enclosures && props.enclosures[0] && props.enclosures[0].url ?

     <Image source={{uri:props.enclosures[0].url}} style={styles.mainPhoto} />

     :

     <Text>No Image</Text>

    }

</View>


查看完整回答
反对 回复 2021-12-02
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

为了防止未定义错误,您还可以使用Ramda 库中的路径。它允许您安全地访问任何嵌套的对象/数组。


const MyComponent = (props) => {

  const apiImage = path(["enclosures", 0, "url"], props);

  return {

      <View>

         {apiImage ?

         <Image source={{uri:apiImage}} style={styles.mainPhoto} />

          :

         <Text>No Image</Text>

         }

      </View>  

  }

}


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信