首页 > 解决方案 > 反应原生:JSON 值'' 类型的 NSNULL 不能转换为有效的 URL

问题描述

对于我目前正在开发的应用程序,我使用以下代码片段来访问设备照片库,然后替换屏幕上显示的默认图像。我将默认值设置为 null 应该没问题?这可以正常工作,Android但是我在 iPhone 设备上收到此错误。

关于如何解决它的任何想法?(头像就是图片的样子)

state = {
user: {
  name: "",
  email: "",
  password: "",
  //Fix it!
  //Works on Android for some reason? But fix the emulator error
  avatar: null
},
errorMessage: null

};

handlePickAvatar = async () => {
UserPermissions.getCameraPermission()

let result = await ImagePicker.launchImageLibraryAsync({
  mediaTypes: ImagePicker.MediaTypeOptions.Images,
  allowsEditing: true,
  aspect: [4, 3]
})

if(!result.cancelled){
  this.setState({user: { ...this.state.user, avatar: result.uri} });
}

};

<View style={{position: "absolute", top: 45, alignItems: "center", width: "100%"}}>

      <Text style={styles.greeting}>{'Hello!\nSign up to get started.'}</Text>

      <TouchableOpacity style={styles.avatarPlaceholder} onPress={this.handlePickAvatar}>
        <Image source={{uri:this.state.user.avatar}} style={styles.avatar}/>
        <Ionicons 
        name="ios-add" 
        size={40} 
        color="#00d589" 
        style={{marginTop:6, marginLeft:2}}>
        </Ionicons>
      </TouchableOpacity>
    </View>

由于“头像”设置为空的状态,我似乎只收到NSNULL 类型的 JSON 值无法在 iPhone 模拟器上转换为有效的 URL错误。我一直遵循这个 Youtube 教程直到 4:30 https://www.youtube.com/watch?v=UNFDILca9M8

有什么我想念的吗?我已经安装了所有软件包,但看不到问题所在。

标签: androidiphonereactjsfirebasereact-native

解决方案


通过在 Image 标记本身内运行一个简单的空检查语句来解决。


推荐阅读