[英]react-relay Invalid use of @refetchable on fragment
我正在學習 react-relay (v13),在使用 @refetchable 指定分頁片段時遇到問題。 這是一個非常基本的結構,如果不使用@refetchable 一切正常(即我可以查詢 grapql 服務器,獲取數據,使用 Fragment 來呈現相同的查詢/片段而無需分頁)
當我在 ProjectsFragment_user 中引入 @refetchable 時,react-relay 編譯器給出了錯誤:
[ERROR] ✖︎ Invalid use of @refetchable on fragment 'ProjectsFragment_user', only supported are fragments on:
- the Viewer type
- the Query type
- the Node interface or types implementing the Node interface
- @fetchable type
現在這很令人困惑,因為 ProjectsFragment_user 在一個看起來像這樣的查詢上:
// Dashboard.js
export const dashboardQuery = graphql`
query DashboardQuery ($id: ID) {
user (id: $id){
id
name
...ProjectsFragment_user
}
}
`;
// then
const data = useLazyLoadQuery(dashboardQuery, {}, {},);
//Projects.js defines fragment
const {data, loadNext} = usePaginationFragment(graphql`
fragment ProjectsFragment_user on User
@argumentDefinitions(
first: {type: "Int", defaultValue: 10}
after: {type: "String"}
before: {type: "String"}
)
@refetchable(queryName: "ProjectsListPaginationQuery")
{
projects (first: $first, after: $after, before: $before)
@connection(key: "ProjectsList_projects") {
total
edges {
node {
id
name
members {
total
edges {
node {
member_id
member {
name
}
role
}
}
}
}
}
}
}
`,
props?.projects);
請注意,如果只是在 ProjectsFragment_user 上使用 Fragment 並刪除 @refetchable,我就可以獲取和呈現數據。
有沒有人知道為什么這里不允許@refetchable?
並回答我自己的問題(經過幾天的嘗試)。 Schema 需要具體說明 Type 正在擴展 Node 接口,否則反應會按照上面的方式抱怨。
所以,我從
type Project {
id: ID!
name: String
}
到
type Project implements Node {
id: ID!
name: String
}
React-Relay 現在將編譯。 我希望中繼錯誤消息更清楚一些,因為有太多的事情可能 go 出錯,而且中繼對事情非常自以為是,更好的錯誤消息將是一個很大的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.