问题描述
我正在使用React Native构建一个应用程序。 我正在获取从数据库中获取的值的数组,以便向用户提供每X秒(3s atm)刷新的折线图。 这在iOS模拟器上可以正常工作,但是在部署到TestFlight并在设备上运行应用程序时,不会显示曲线,什么也不会发生。 由于我可以使用其他一些需要从数据库中获取数据的功能,因此我发现问题不是来自API请求。 我目前使用的是 react-native-chart-kit ,但是我也尝试过使用 react-native-svg-charts ,问题仍然存在。
有任何提示吗?
当我显示获取的值的数组时,问题是相同的,新值每3秒出现在模拟器上,但是在设备上什么都不显示。
解决方法
我终于找到了问题。
该问题是在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)
我是新手,所以我无法解释这种行为,但是似乎这个小小的变化使Xcode识别了时间戳,并正确地执行了API请求。
如果有人可以解释,请放心!