我正在尝试用片段定义我的createRefetchContainer。但是,我收到有关对象类型数组的defaultValue的错误。我检查了文档,但无法弄清楚如何处理对象类型参数数组的默认值属性。
我尝试放置空数组“ [] ”或“ [{键:”状态“,值:”活动“}] ”,但它们都不起作用
export default createRefetchContainer(
translate('admin')(UserList),
graphql`
fragment UserList_usersWithPage on Query
@argumentDefinitions(
filters: { type: [UserFilterInput], defaultValue: [] }
pageNumber: { type: Int, defaultValue: 0 }
pageSize: { type: Int, defaultValue: 25 }
) {
page: findUsersWithPage(filters: $filters, pageNumber: $pageNumber, pageSize: $pageSize) {
totalPages
totalElements
users {
...MiniProfile_user @relay(mask: false)
}
}
}
fragment UserList_filterFields on Query {
accounts: findDistinctUserAccounts
departments: findDistinctUserDepartments
expertises: findDistinctUserExpertises
ranks: findAllUserRankCodes
}
`,
graphql`
query UserListRefetchQuery($userFilterInput: [UserFilterInput], $pageNumber: Int, $pageSize: Int) {
...UserList_usersWithPage
@arguments(userFilterInput: $userFilterInput, pageNumber: $pageNumber, pageSize: $pageSize)
}
`,
);
ERROR:
GraphQLParser: Expected definition for variable `filters` to be an object
with the following shape: `{type: string, defaultValue?: mixed, nonNull?:
boolean, list?: boolean}`, got `[object Object]`. Source: document
`UserList_usersWithPage` file: `scenes/admin/pages/UserList.js`.
答案 0 :(得分:0)
我找到了一个似乎可行的解决方案,将完整的参数类型包装在字符串中,并使用“!”在数组中根据需要标记我的数组成员类型:
...
@argumentDefinitions(
filters: { type: "[Filter!]", defaultValue: [] }
)
...
因此在OP的示例中,这意味着:
export default createRefetchContainer(
translate('admin')(UserList),
graphql`
fragment UserList_usersWithPage on Query
@argumentDefinitions(
filters: { type: "[UserFilterInput!]", defaultValue: [] }
pageNumber: { type: Int, defaultValue: 0 }
pageSize: { type: Int, defaultValue: 25 }
) {
...
请注意,空数组仍然是有效的参数类型,因为[Type!]
允许使用空数组,但是要求任何成员都必须为Type
类型的非null。
我对graphql还是很陌生,可以自我介绍,因此无法进一步了解为什么目前正在工作。