我有通过这样的道具传递的数组:
{
id: 1,
Name: "Abe",
HitPointValue: "124",
StrengthValue: "12",
IntelligenceValue: "14",
WisdomValue: "16",
DexterityValue: "12",
ConstitutionValue: "10",
CharismaValue: "17",
Avatar: require('./images/avatar_1.jpg')
}
我在这样的组件中收到这些:
static navigationOptions = ({ navigation }) => {
const {char} = state.params;
}
当我像这样一个一个地写出数组的属性时,它可以工作:
render() {
const { params } = this.props.navigation.state;
return (
<View>
<Text>
Name: {params.char.Name}{"\n"}
</Text>
</View>
)
}
但是当我尝试使用“map”循环遍历数组时(如下所示),我只是得到一个错误,指出“
undefined不是函数(params.char.map)
render() {
const { params } = this.props.navigation.state;
return (
<View>
{params.char.map(c =>
<Text>
{c.key} : {c.value} {"\n"}
</Text>
)}
</View>
)
}
我正在尝试按照本指南Lists and Keys进行操作,但它无效。
我可能做错了什么?
谢谢!
答案 0 :(得分:3)
因为数据不是数组,map
仅适用于array
。先使用Object.entries,然后使用map
。
像这样写:
render() {
const { params } = this.props.navigation.state;
return (
<View>
{Object.entries(params.char).map(([key,value], index) =>
<Text key={key}>
{key} : {value} {"\n"}
</Text>
)}
</View>
)
}
检查此代码段:
let obj = {
id: 1,
Name: "Abe",
HitPointValue: "124",
StrengthValue: "12",
IntelligenceValue: "14",
WisdomValue: "16",
DexterityValue: "12",
ConstitutionValue: "10",
CharismaValue: "17",
};
Object.entries(obj).map(([key, value], index) => console.log(key, value, index))
&#13;