在其他类方法中使用<Query>的正确模式

我了解阿波罗更喜欢在渲染方法中使用<Query>而不是this.props.client.query()来进行查询。

我创建的每个新类都从<Query>组件开始(以保持最佳实践),但是100%的时间最终将其删除并只在{{ 1}},否则基本上所有其他类方法都是无用的,因为它无法访问所需的任何数据。

是否故意从this.props.client.query()组件获得的任何东西只能在componentWillMount中使用?

仅依靠<Query>完全是反模式吗?如果是这样,我是否应该创建一个另一个组件放入我的render()内,以使诸如this.props.client.query()之类的东西不会变得毫无用处?

为所有问题表示歉意,我很惊讶从未见过这个问题。

lblwb 回答:在其他类方法中使用<Query>的正确模式

不使用client.query的主要原因 是因为它没有观察到缓存中的更改。如果信息在缓存中进行了更新(例如,在发生突变后),则除非重新安装,否则组件中呈现的数据将不会更新。

如果您有一个类组件,并且正在使用Query组件,并且需要提供的数据可用于render之外的方法,那么是的,您需要两个组件,以便数据可以作为道具传递。这有效地迫使您使用container/presenter pattern

或者您也可以使用graphql HOC来达到相同的效果。

但是...从3.0版开始,render-prop组件和HOC均为deprecated。因此,就“最佳做法”而言,您可能想migrate使用功能组件并始终使用钩子。

本文链接:https://www.f2er.com/3124481.html

大家都在问