typescript - 带有查询的可重用类型化 react-apollo 组件
问题描述
可以创建类型化的<Query>
<Mutation>
或<Subscription>
通过扩展相应的类:
class MyQuery extends Query<TData, TVariables> { }
但是,在这种情况下,我query
每次使用时都必须提供<MyQuery>
:
<MyQuery query={queries.MyQuery}> // etc.
有没有一种很好的方法来“烘焙”查询,以便<MyQuery>
无需提供即可重复使用query={...}
?
解决方案
我猜你可以使用一个小包装组件:
type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
function cannedQuery<TData, TVariables>(query: DocumentNode) {
return (props: Omit<QueryProps<TData, TVariables>, "query">) =>
<Query query={query} {...props}/>;
}
const MyQuery = cannedQuery<TData, TVariables>(gql`...`);
我不熟悉react-apollo
,所以如果这不起作用,请告诉我出了什么问题,我可能会想出别的办法。在我看来,使用react-apollo
TypeScript 的每个人都想要这个,所以你可以建议将此助手添加到react-apollo
.
推荐阅读
- git - 克隆,从 Github 中提取数据并将 repo 存储在 Flutter 本地
- r - Finding the optimal bandwidth for ksmooth() in R via cross-validation given a grid of bandwidth values
- python - How do I parse a string containing operations to a float in Python?
- azure-functions - Azure 函数绑定类型面临的问题
- javascript - How to copy the first row value to rest values using Angular8
- php - invalid_grant, bad request when refreshing a webpage after signed in though google api
- javascript - my bootstrap page doesnt show properly on mobile devices
- sql - MS SQL join query with transposing rows to columns
- python-3.x - Can we upload media files using URL in MediaFileUpload?
- visual-studio - Update Visual Studio 2019 from 16.8.6 to 16.9.3. Now build projects very slowly