【发布时间】:2019-07-31 05:10:04
【问题描述】:
我在 react-native 中映射对象数组:
const status_image = [
{
image: require("../../assets/claimsImages/Question.png")
},
{
image: require("../../assets/claimsImages/Approved.png")
},
{
image: require("../../assets/claimsImages/In Process.png")
},
{
image: require("../../assets/claimsImages/Cancelled.png")
}
]
this.state = {
newdata: [],
images: status_image,
}
render(){
var img = this.state.images.map( val => val.image);
const claimData = this.state.newdata.map((val, index) => {
return (
<View key={index} style={{flexDirection: 'row', justifyContent: 'space-between', margin: 15,}}>
<View style={{ borderBottomWidth: 1,borderBottomColor: '#A6ACAF' }}>
<Text>EW</Text>
{val.claim_approval_status.map((status, i) => (
<View style={{marginVertical: 12}}>
<Image
style={styles.stretch}
source={img[i]}
/>
</View>
))}
</View>
<View>
{val.claim_approval_status.map((status, i) => (
<View style={{marginTop: 36}}>
<Text>{status}</Text>
</View>
))}
</View>
</View>
)
});
return (
<View>
{claimData}
</View>
)
}
我想要实现的是图像应该基于状态值进行映射,即如果我的 val.claim_approval_status 等于“问题”,那么图像“问题.png”应该呈现在前面那个状态。如果 val.claim_approval_status 等于 'approved',则图像为 'Approved.png'。
所有这些状态值都与图像一起映射在一个表格中,只是图像需要按照它们的状态值显示。
我同样尝试了以下 switch case 方法,但在实现时感到困惑。
componentDidMount(){
this.state.newdata.map((x, i) => {
x.claim_approval_status.map((y, i) => {
let status = y;
console.log(status) //this gives four status values
'question, approved, inprocess,
cancelled'
});
});
var status_values = this.state.images.map((val, i) =>
{
switch (i) {
case 1:
// something to append that image in status data mapping
break;
case 2:
// something to append that image in status data mapping
break;
case 3:
// something to append that image in status data mapping
break;
}
}
// ...
);
}
我怎样才能达到这个结果?任何帮助表示赞赏。
【问题讨论】:
标签: javascript react-native switch-statement