我有一个简单的功能可以在我的react native(expo)项目中显示纸牌。它在本地测试时有效,但在构建设备(APK等)时无效。根据我的理解,这是因为字符串require
不能是动态的。如果是这样,处理此问题的最佳方法是什么?
我是否需要对所有52张卡进行需求,然后为该卡的来源选择适当的变量?或者,还有更好的方法?
export default function Card( { cardID, index, onCardClick }) {
const rankIndex = cardID % 13;
const rank = RANKS[rankIndex];
const suitIndex = cardID / 13 | 0;
const suit = SUIT[suitIndex];
let cardImage = require('../../assets/game/cards/'+rank+suit+'.png');
return (
<TouchableOpacity style={[index && index != 0 && styles.cardMargin]} onPress={() => onCardClick(cardID)}>
<Image style={styles.card} source={cardImage} />
</TouchableOpacity>
);
}
谢谢
做这样的事情:
const cardImages = {
AceSpades: require('../../assets/game/cards/acespaces.png'),
AceClubs: require('../../assets/game/cards/aceclubs.png'),
// etc..
};
您可以通过编写一个小节点脚本或手动创建它来从文件系统生成此数组。
Metro捆绑器要求导入是静态的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句