在 react-native 中获取数据时出现错误

Posted

技术标签:

【中文标题】在 react-native 中获取数据时出现错误【英文标题】:I am getting error while fetching data in react-native 【发布时间】:2019-07-12 21:32:32 【问题描述】:

这里是api链接:

http://api.aladhan.com/v1/timingsByCity?city=Dubai&country=United%20Arab%20Emirates&method=8

<Text>responseMsg.code</Text>
<Text>responseMsg.status</Text>

上面的行是有效的。 我能够从这个 API 中获取数据,例如代码、状态,但我无法从这个 API 中获取祈祷时间。我不知道如何编写该行以从该 API 获取祈祷时间。

<Text>(responseMsg.data || []).map(time => time.timings.Fajr)</Text>
<Text>(responseMsg.data || []).map(time => time.timings.Dhuhr)</Text>

我收到以下错误TypeError: undefined is not an object (evaluating '(responseMsg.data || ).timings.Fajr')

【问题讨论】:

究竟是什么错误? 错误是:TypeError: undefined is not an object (evalating '(responseMsg.data || ).timings.Fajr') 【参考方案1】:

您应该直接访问时间,因为 data 字段是对象而不是数组。你要写的是:

<Text>(responseMsg.data || ).timings.Fajr</Text>

【讨论】:

没有兄弟,它也不起作用。错误是:TypeError: undefined is not an object (evalating '(responseMsg.data || ).timings.Fajr') 哦,是的!因为在获取数据时,时间键是未定义的。也许你可以像这样responseMsg.data &amp;&amp; responseMsg.data.timings ? &lt;Text&gt;responseMsg.data.timings.Fajr&lt;/Text&gt; : null 将它包装成三元组 或者您可以将其保存在变量中,例如:const data = = responseMsg; const timings = = data; 它在数据>元>方法>名称.. responseMsg.data && responseMsg.data.meta ? responseMsg.data.meta.method.name : null..... 如果我这样写那么它就不行了 现在可以了,兄弟。谢谢你的帮助。如果你能帮忙的话,最后一件事。我正在使用地理定位。如何在 api 链接中设置地理位置。因为 api 接受城市名称和地理位置只获取纬度和经度。【参考方案2】:

.Map on responseMsg.data 将不起作用,因为数据是一个对象。 Map 是数组而不是对象的函数。

【讨论】:

那么我如何在没有 .map 的情况下为 fetch 编写代码? 不需要使用map直接用responseMsg.data.timings.Fajr访问对象即可。

以上是关于在 react-native 中获取数据时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

在 setInterval 方法中使用 getCurrentPosition geoLocation 函数通过 React-Native 获取用户当前位置时出现问题

使用 react-native run-android 运行时出现 React-Native 错误

在下面执行 npm install gettng 时出现 react-native 错误

尝试执行 react-native 应用程序时出现“错误无法读取未定义的属性‘拆分’”

应用程序启动时出现错误“无法获取 BatchedBridge,请确保您的捆绑包已正确打包”

运行 react-native ios 模拟器时出现间歇性错误(“由于模拟器已经启动,无法启动您定义的模拟器”)