错误未定义不是函数

时间:2017-05-25 17:38:34

标签: reactjs react-native

我有通过这样的道具传递的数组:

{
    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进行操作,但它无效。

我可能做错了什么?

谢谢!

1 个答案:

答案 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>
    )
 }

检查此代码段:

&#13;
&#13;
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;
&#13;
&#13;