Mig*_*inn 3 typescript reactjs graphql react-apollo
我正在尝试使用 Apollo 查询 GraphQl API。我正在用打字稿在 React 中执行此操作,但我无法让查询组件停止抛出错误。我对整个组合很陌生,所以我可能做了一些明显错误的事情。有任何想法吗?
这是错误:
Type '{ children: (string | (({ loading, error, data }: QueryResult<any, OperationVariables>) => any))[]; query: any; }' is not assignable to type 'Pick<Readonly<QueryProps<any, OperationVariables>> & Readonly<{ children?: ReactNode; }>, "children" | "displayName" | "skip" | "onCompleted" | "onError" | "ssr" | "variables" | ... 6 more ... | "partialRefetch">'.
Types of property 'children' are incompatible.
Type '(string | (({ loading, error, data }: QueryResult<any, OperationVariables>) => any))[]' is not assignable to type '((result: QueryResult<any, OperationVariables>) => ReactNode) | (((result: QueryResult<any, OperationVariables>) => ReactNode) & string) | (((result: QueryResult<any, OperationVariables>) => ReactNode) & number) | ... 4 more ... | (((result: QueryResult<...>) => ReactNode) & ReactPortal)'.
Type '(string | (({ loading, error, data }: QueryResult<any, OperationVariables>) => any))[]' is not assignable to type '((result: QueryResult<any, OperationVariables>) => ReactNode) & ReactNodeArray
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import React from 'react';
import gql from "graphql-tag";
import { Query } from "react-apollo";
export interface LoginProps {
data: object; item: string; query: object; loading: string; error: string;
};
const getLogin =
gql`
{
viewer {
login
}
}
`;
export class Test extends React.Component<LoginProps, {}> {
<Query query={getLogin}>
{({ loading, error, data }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error!</p>;
return data.viewer.map( item => {
<div key={item.login}>
<p>{item.login}</p>
</div>
});
}};
</Query>
};
export default Test;
Run Code Online (Sandbox Code Playgroud)
显然不相关,但对于那些来这里寻找答案的人来说,从内部解构Query如下:
<Query query={getLogin}>
{(result: QueryResult) => {
const { loading, error, data } = result;
// ...rest here
if (loading) return <p>Loading...</p>;
if (error) return <p>Error!</p>;
return data.viewer.map( item => {
<div key={item.login}>
<p>{item.login}</p>
</div>
});
}};
</Query>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |