许多人可能听说过GraphQL。它提供QUERY
和MUTATION
。它还支持SUBSCRIPTION
作为web socket
的100%替代。我是GraphQL和hooks的忠实拥护者。今天,我遇到了useSubscription
的问题,它是SUBSCRIPTION
的钩子版本。当这个订阅被触发时,React组件被重新渲染。我不确定为什么会导致重新渲染。
import React from 'react'
import { useSubscription } from 'react-apollo'
const Dashboard = () => {
...
useSubscription(query, {
onSubscriptionData: data => {
...
}
})
render (
<>
Dashboard
</>
)
}
实际上,useSubscription
的API文档现在对此没有任何说明。如果您为我提供了防止重新渲染的好方法,将不胜感激。
谢谢!
答案 0 :(得分:0)
以我的经验,在onSubscriptionData中接收新数据时,无法阻止重新渲染。如果将全局数据用于计算,则应将useMemo用于全局变量。另一方面,您应该考虑是否需要将变量放入onSubscriptionData中?还有其他方法吗?您在正确的组件中使用过useSubscription吗?如果必须这样做,则必须接受额外的渲染。
希望我的回答对您的情况有所帮助。