之前通过: 【已解决】ReactNative中加载图片失败:Unknown named module 和: 【已解决】ReactNative中如何实现(xxx)=>yyy中yyy中添加js代码
发现了:
Image中的require中,必须是静态字符串
-》静态路径-》RN在编译期间,就可以去查找对应的图片了
所以此处,无法通过之前的:
var levelIconName = './img/customerLevel_' + rowData.intentionLevel + '.png'; var levelIcon = require(levelIconName);
只能写成静态的:
var levelIconName = './img/customerLevel_B.png';
但是很明显,就没法根据传入的参数值,动态加载对应的图标了
所以需要去用swicth case去根据传入的参数,生成对应的静态字符串
-》即图片的路径地址
react native switch case
javascript – Switch Case Doesn’t work in React Native – Stack Overflow
react native js switch case
react switch case
不过,抽空再去采用:
Killing Switch Statements in React with the Strategy Pattern
提到的方法:
暂时没有完全理解
functional problem
imperative style
结果在:
【已解决】ReactNative iOS运行再次出错:No bundle URL present
之后,代码:
< View style = {
styles.customerList
} >
<ListView dataSource = {
this.state.dataSource
}
renderRow = { (rowData) = >{
//var levelIconName = ‘./img/customerLevel_’ + rowData.intentionLevel + ‘.png’;
//var levelIconName = ‘./img/customerLevel_B.png’;
//var levelIcon = require(‘./img/customerLevel_B.png’);
var levelIcon = function() {
switch (rowData.intentionLevel) {
case“A”:
return require(‘. / img / customerLevel_A.png’);
case“B”:
return require(‘. / img / customerLevel_A.png’);
case“C”:
return require(‘. / img / customerLevel_A.png’);
case“H”:
return require(‘. / img / customerLevel_A.png’);
}
};
console.log(levelIcon);
return ( < View style = {
styles.customerRow
} > <Image style = {
styles.intentionLevel
}
source = {
levelIcon
}
/>
<Text style={styles.customerName}>{rowData.customerName}</Text > <Text style = {
styles.intentionCar
} > {
rowData.intentionCar
} < /Text>
<Text style={styles.updateTime}>{rowData.updateTime}</Text > </View>
);
}
}
/> </View>出错:
点击后,显示更多细节:

javascript switch case
Switch statement multiple cases in JavaScript – Stack Overflow
最后,就是用普通的js的switch case,就可以了:
renderRow = { (rowData) = >{
//var levelIconName = './img/customerLevel_' + rowData.intentionLevel + '.png';
//var levelIconName = './img/customerLevel_B.png';
//var levelIcon = require('./img/customerLevel_B.png');
var levelIcon = "";
switch (rowData.intentionLevel) {
case "H":
levelIcon = require('./img/customerLevel_H.png');
break;
case "A":
levelIcon = require('./img/customerLevel_A.png');
break;
case "B":
levelIcon = require('./img/customerLevel_B.png');
break;
case "C":
levelIcon = require('./img/customerLevel_C.png');
break;
default:
levelIcon = require('./img/customerLevel_C.png');
}
console.log(levelIcon);
return ( < View style = {
styles.customerRow
} > <Image style = {
styles.intentionLevel
}
source = {
levelIcon
}
/>
<Text style={styles.customerName}>{rowData.customerName}</Text > <Text style = {
styles.intentionCar
} > {
rowData.intentionCar
} < /Text>
<Text style={styles.updateTime}>{rowData.updateTime}</Text > </View>
);
}
} 
【总结】
此处,ReactNative 中实现switch case,就是普通的js中的switch case:
var levelIcon = "";
switch (rowData.intentionLevel) {
case "H":
levelIcon = require('./img/customerLevel_H.png');
break;
case "A":
levelIcon = require('./img/customerLevel_A.png');
break;
case "B":
levelIcon = require('./img/customerLevel_B.png');
break;
case "C":
levelIcon = require('./img/customerLevel_C.png');
break;
default:
levelIcon = require('./img/customerLevel_C.png');
}
console.log(levelIcon);即可。
【注】
后来经过推荐,又发现一个好的教程,详见: