簡體   English   中英

GraphQL + Relay現代片段為我提供了一系列空帖

[英]GraphQL + Relay modern fragment gives me an array of null posts

我正在使用Relay modern,GraphQL和Graphcool開發React Native應用程序。 我正在嘗試從數據庫中獲取帖子,並且我有3個文件,Post.js,PostList和index.js。

PostList.js:

export default createFragmentContainer(PostList, graphql`
  fragment PostList_viewer on Viewer {
    allPosts(last: 100, orderBy: createdAt_ASC) @connection(key: "PostList_allPosts", filters: []) {
      edges {
        node {
          ...Post_post
        }
      }
    }
  }
`)

Post.js

export default createFragmentContainer(Post, graphql`
  fragment Post_post on Post {
    id
    content
    createdAt
    author {
      id
      username
    }
  }
`)

index.js

const Feed = () => (
  <QueryRenderer
    environment={environment }
    query={AllPostQuery}
    render={({ error, props }) => {
      if (error) {
        return <div>{error.message}</div>
      } else if (props) {
        return <PostList viewer={props.viewer} />
      }
      return <Text>Loading</Text>
    }}
  />
)

當我控制台日志this.props.viewer.allPostsPostList.js我得到{ edges: [ null, null, null ], ... 我在數據庫中有3個帖子,所以它正在查找這些帖子,但是為什么它們為空? l

首先,如果遇到問題,請嘗試記錄“根”對象,該對象不是props的分支,而不是其內部的分支-這將使您更容易迷失數據結構。

而且,據我所知,Relay做了一些魔術,使數據僅在定義了片段的文件中對您可用,因此在PostList.js中,您將看不到帖子的詳細信息。 嘗試從Post.js打印數據。 這可能是您看到打印null值的原因。

來自GraphQL的數據也將在_ (下划線)后從片段名稱派生的變量名稱下供您使用,因此在您的示例中,它將不是post allPosts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM