在我的涉及加密货币的本机应用程序中,我有一个名为coinImageUrls
的全局redux状态,具有以下结构:
coinImageUrls = {
BTC: 'https://coin-image-url/btc.png',
ETH: 'https://coin-image-url/eth.png',
ABC: 31,
}
当我Image.prefetch
缓存远程图像时,会填充此对象。如果图片网址有效,我会按原样存储网址字符串。但是,如果prefetch
因图片网址无效而失败,我会使用require
的本地回退图片。代码的要点是这样的:(显然不是原始代码,因为coinImageUrls
在redux中)
Image.prefetch(imageLink)
.then(() => {
coinImageUrls[coinSymbol] = imageLink
})
.catch(() => {
coinImageUrls[coinSymbol] = require('../assets/fallback-image.png')
})
最后,通过检查图像是字符串还是整数来加载图像。
typeof coinImageUrls[coinSymbol] === 'string'
? <Image source={{uri: coinImageUrls[coinSymbol]}} />
: <Image source={coinImageUrls[coinSymbol]} />
这里的关键点是,对于每个硬币符号,整个预取只会发生 ONCE 。这意味着硬币ABC分配给31的时刻(从require
转换而来),它永远不会改变。
所以我的问题是,数字31会改变吗?如果确实可以确保require
始终转换为相同的整数?这甚至是生产环境中的一个问题吗?