В моем собственном родном приложении, которое использует криптовалюту, у меня есть глобальное состояние избыточности, называемое coinImageUrls
со следующей структурой:
coinImageUrls = {
BTC: 'https://coin-image-url/btc.png',
ETH: 'https://coin-image-url/eth.png',
ABC: 31,
}
Этот объект заполняется, когда я выполняю Image.prefetch
для кэширования удаленных изображений,Если URL изображения действителен, я сохраню строку URL как есть.Однако, если prefetch
не удастся из-за недопустимого URL-адреса изображения, я буду использовать локальное резервное изображение с require
.Суть кода примерно такая: (очевидно, не исходный код, поскольку coinImageUrls
в редуксе)
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
всегда преобразовывалось в одно и то же целое число?Это даже проблема в производственной среде?