2017-05-25 151 views
0

我有陣列我經由道具通過這樣的:錯誤未定義不是函數

{ 
    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> 
     ) 
} 

但是當我嘗試使用通過數組「地圖」循環(如下圖所示),我只是得到指出「

不確定是不是一個函數(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

什麼會被包含在'params.char'? Map是'Array'類型的一種 – Icepickle

回答

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))

相關問題