【问题标题】:Missing props mapper in @apollo/react-hooks useQuery@apollo/react-hooks useQuery 中缺少道具映射器
【发布时间】:2020-01-23 13:55:07
【问题描述】:

在旧的 react-apollo 和现在的 @apollo/react-hoc 中,可以通过传递函数将 API 的响应映射到另一种格式:

config.props 属性允许您定义一个使用道具 [...] 并允许您计算新道具的地图函数

此功能提供了一种通过在其他地方定义 Apollo HOC 从组件中删除丑陋转换代码的方法,并且由于它仅在数据更改时运行,因此不需要记忆。

我看不到如何使用useQuery 执行此操作。 Hooks 只能在 React 组件中直接使用(Rules of Hooks),所以我能想到的只是:

import { fooQuery, mapFoo } from 'api';
...
const { data } = mapFoo(useQuery(fooQuery))

这可能是可以接受的,但它在每次渲染时运行 mapFoo,而使用 useMemo 它变得太多了:

const bar = useQuery(barQuery); // unwanted value
const memoBar = useMemo(() => mapBar(bar), [bar])

我也没有找到其他人在寻找这个丢失的功能,所以我想知道我是否遗漏了什么。还有其他方法吗?

【问题讨论】:

    标签: react-apollo


    【解决方案1】:

    我猜props 的省略是有意的,而在不使组件混乱的情况下重写这些转换/记忆 HOC 的现代方法是为每个查询创建一个自定义挂钩,该挂钩封装了 useQuery 和 useMemo。

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 2019-10-06
      • 2019-11-19
      • 2020-01-02
      • 2019-09-14
      • 1970-01-01
      • 2018-08-01
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多