-1

我正在使用 React Native 构建一个应用程序。我正在获取从数据库中获取的一组值,以便为用户提供每 X 秒(3s atm)刷新一次的折线图。这在 iOS 模拟器上运行良好,但在部署到 TestFlight 并在设备上运行应用程序时,曲线不会显示,什么也没有发生。由于我可以使用其他一些需要从数据库中获取数据的功能,我发现问题不在于 API 请求。我目前使用react-native-chart-kit,但我也尝试使用react-native-svg-charts,问题仍然存在。

有什么提示吗?

当我显示获取值的数组时,问题是相同的,模拟器上每 3 秒出现一个新值,但它在设备上没有显示任何内容。

4

1 回答 1

0

我终于找到了问题。

该问题是在 API 请求中发现的。我的请求需要 2 个时间戳参数:开始时间/结束时间

我总是使用浏览器调试应用程序并从 RN 项目启动 ios sim。

这次我尝试从 Xcode 运行项目并将 Scheme 编辑为 release 而不是 debug 。

当我从 Xcode 检查控制台时,我注意到我的开始时间时间戳被视为“NaN”.. 不是结束时间时间戳。

回到RN项目,回到浏览器控制台,时间戳没问题。

我做了一些随机更改,现在它工作正常。

这是我在解决问题之前所拥有的:

function formatDate(rawStamp) {
        const now = new Date(rawStamp);
        var convertToStr =
            now.getFullYear() +
            "-" +
            ("00" + (now.getMonth() + 1)).slice(-2) +
            "-" +
            ("00" + now.getDate()).slice(-2) +
            " " +
            ("00" + now.getHours()).slice(-2) +
            ":" +
            ("00" + now.getMinutes()).slice(-2) +
            ":" +
            ("00" + now.getSeconds()).slice(-2);

   
           return convertToStr
   }

   const nowStr = formatDate(Date.now() - 7200000) 
   const gameStampMinusX = Date.parse(nowStr) - (300000) 
   const gameStampMinusXToStr = formatDate(gameStampMinusX)

这是解决问题的方法:

   const nowStr = formatDate(Date.now() - 7200000)
   const gameStampMinusX = Date.now() - 7200000 - 300000
   const gameStampMinusXToStr = formatDate(gameStampMinusX)

I'm a newbie so I cannot explain this behavior, but seems that this little change makes Xcode recognize the timestamp, and proceed the the API request correctly.

If anyone can explain, feel free !

于 2020-08-24T13:26:17.480 回答