【问题标题】:React Native Image how to use onErrorReact Native Image 如何使用 onError
【发布时间】:2018-08-14 15:48:00
【问题描述】:

您好,我目前正在尝试加载多个网络图像,但它们经常无法在 android 上加载。我正在尝试使用 onError 来诊断原因,但似乎无法正常工作。

我试过把它当作

onError={(e) => console.log(e}

onError(error){
  console.log(error)
}

onError={ this.onError.bind(this) }

但是这两个都会导致这个对象

Proxy [[Handler]]: Object [[Target]]: SyntheticEvent [[IsRevoked]]: false

据我所知,这是错误事件,不包含任何有用的东西。

我的问题是如何使用 onError 来诊断我的网络映像失败的原因?但如果你有任何想法,我也会很乐意接受这些。

【问题讨论】:

    标签: javascript android image react-native


    【解决方案1】:

    试试这个

     <Image
                        onError={(error) => {
    
                          const getCircularReplacer = () => {
                            const seen = new WeakSet();
                            return (key, value) => {
                              if (typeof value === "object" && value !== null) {
                                if (seen.has(value)) {
                                  return;
                                }
                                seen.add(value);
                              }
                              return value;
                            };
                          };
                          console.log("this Images Error ")
                          console.log(JSON.stringify(error, getCircularReplacer()))
    
                        } 
                        }
                        />
    

    【讨论】:

      【解决方案2】:

      这是一个SyntheticEvent,在图片文档here中指定,你可以试试下面的代码

      onError=({ nativeEvent: {error} }) => console.log(error)
      

      希望这会有所帮助。

      【讨论】:

      • 感谢您的帮助,我没有意识到这是文档所说的。它不再给我对象,但错误只是“未定义”,看起来本机事件是一个空对象
      • 嗨@tjkind,我的错,我放了额外的括号,我编辑了答案,之前是{{ nativeEvent: {error} }},但正确的是{ nativeEvent: {error} },请再试一次,它应该可以工作。对不起,额外的括号。
      • 我确实抓住了这一点。我目前正在使用这个onError={(e) =&gt; console.log(e.nativeEvent.error)},它打印出未定义。但是我被告知要继续前进所以¯_(ツ)_/¯
      • 我刚刚在 RN-52 中使用代码 &lt;Image onError={({ nativeEvent: {error} }) =&gt; console.log(error) } style={{height: 200, width: 200}} source={{uri:'https://randomuser.me/api/portraits/women/2ww.jpg'}}/&gt; 进行了测试,我能够看到 error 日志。
      • 经过几个月的随意实验,我发现如果错误出现在 ios 上,则会出现错误消息(有时不是有用的消息),但在 android 上它总是一个空对象
      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2020-07-17
      • 2022-11-12
      • 2020-09-16
      相关资源
      最近更新 更多