如何转换从@apollo/react-hooks 接收到的数据
Posted
技术标签:
【中文标题】如何转换从@apollo/react-hooks 接收到的数据【英文标题】:How to transform received data from @apollo/react-hooks 【发布时间】:2020-06-19 23:42:53 【问题描述】:我正在使用``查询:
const GET_COMMENTS = gql`
query getComments
getComments (where: code: "/about-us" )
id
text
createdAt
`
....
const loading, error, data = useQuery(GET_COMMENTS);
在我的代码中...
代码是从服务器中获取 cmets 的注释对象是 date: string!
属性,我想将这个 date: string!
转换为 javascript 日期 (new Date(comment.date)
) 如何在获取数据后直接执行此操作?
我不想转换每次调用的渲染。
有这样的吗?:
const loading, error, data =
useQuery(
GET_COMMENTS,
transform: (data) => data.map(comment => (...comment , date: new Date(comment.date)) )
);
感谢您的帮助!
【问题讨论】:
【参考方案1】:缓存类型策略中的merge function 就是您要查找的内容。它允许您定义将传入数据写入缓存的自定义策略。
创建缓存时,您可以定义如何写入特定字段。假设date
字段属于Comment
类型:
const cache = new InMemoryCache(
typePolicies:
Comment:
fields:
date:
merge(_, date)
return new Date(date);
,
,
,
,
,
);
【讨论】:
【参考方案2】:试试这个:
const loading, error, data = useQuery(GET_COMMENTS,
onCompleted: data =>
// Do changes here
);
你可以在这里查看https://www.apollographql.com/docs/react/api/react/hooks/
【讨论】:
以上是关于如何转换从@apollo/react-hooks 接收到的数据的主要内容,如果未能解决你的问题,请参考以下文章
@apollo/react-hooks 中的 `useSubscription` 方法加载卡住
在@apollo/react-hooks 的 useQuery 钩子中忽略了跳过参数
使用@apollo/react-hooks,react 应用程序在刷新过期时严重崩溃
有没有办法使用 @apollo/react-hooks 访问多个 graphql 突变的选项