2017-09-17 96 views
1

帖子:請求密鑰 - 陣營機錯誤

[ 
{ id:1, name:'post1', desc: 'post1 desc', parentId: 1 }, 
{ id:2, name:'post2', desc: 'post2 desc', parentId: 2 }, 
{ id:3, name:'post3', desc: 'post3 desc', parentId: 1 } 
] 

文章減速到來。有mapStateToProps並且可以在控制檯上打印this.props.posts

我的功能:

getPosts = (idPost = 1) =>{ 
    const { posts } = this.props.posts 
    return 
     posts.filter(id => posts[id].parentId == idPost) 
     .map((key, idx) => { 
      const myPost = posts[key]; 
      return(
      <View> 
       <Text> 
       { myPost.name } 
       </Text> 
      </View> 
      ) 
     }); 
}; 

錯誤:Requested keys of a value that is not an object.爲函數的1號線。

我在做什麼錯?

更新1

getPostsNew = (namePost = 'post1) =>{ 
    const { posts } = this.props.posts 

    return posts.map((key, idx) => { 
    if (key.name == namePost) { 
     return(
      <View> 
      <Text> 
       { key.name } 
      </Text> 
      </View> 
    ) 
    } else { 
     return null 
    } 
    });   
}; 
+0

它不應該是const {}職位= this.props;而不是this.props.posts?此外posts.filter會給你在回調中的每個帖子不只是id。檢查你的過濾器功能。地圖功能 –

回答

2

您應修改如下代碼來解決這個問題:

getPosts = (idPost = 1) =>{ 
    const { posts } = this.props.posts 

    return posts.map((key, idx) => { 
     if (key.parentId === 1) { 
      return(
       <View> 
       <Text> 
        { key.name } 
       </Text> 
       </View> 
     ) 
     } else { 
      return null 
     } 
     });   
    }; 

    render() { 
    return (
     <View> 
     {this.getPosts(1)} 
     </View> 
    ); 
    } 
+0

也不起作用。我嘗試了它,並在{'中包裝了{key.name},但沒有顯示任何內容。我沒有看到任何錯誤,但沒有數據。 – Somename

+0

我把它稱爲'{this.getPosts()}' – Somename

+0

我更新我的答案,請測試它。 –