Graphql 阿波罗查询组件的重新呈现有哪些规则?
我有一个具有以下定义的GraphQL字段:Graphql 阿波罗查询组件的重新呈现有哪些规则?,graphql,react-apollo,Graphql,React Apollo,我有一个具有以下定义的GraphQL字段: query GetData($date: DateTime, $id: Int) { getData(date: $date, id: $id) { ...Data } } 我一直在使用Apollo客户端查询组件在React中使用这些数据,如下所示: ids.map((id) => ( <Query key={id} query={Queries.getData}
query GetData($date: DateTime, $id: Int) {
getData(date: $date, id: $id) {
...Data
}
}
我一直在使用Apollo客户端查询组件在React中使用这些数据,如下所示:
ids.map((id) => (
<Query
key={id}
query={Queries.getData}
variables={{
date: date,
id: id,
}}
fetchPolicy="network-only"
>
{({
loading,
error,
data,
}: QueryResult<{ data: any}>) => {
return (
);
}}
</Query>
这是从我的其他组件调用的,如下所示:
<Query
query={Queries.getAllData}
variables={{
date: date,
ids: ids,
}}
//pollInterval={500}
>
{({
loading,
error,
data,
}: QueryResult<{ getAllData: { count: number } }>) => {
const count=
data && data.getAllData && data.getAllData.count;
return (
<li className="actions__group">
<div className="actions__item">
<Button
className={'button button--fill-green'}
onClick={this.onAction}
children={
count? (
<span className="button__badge">
{count}
</span>
) : (
undefined
)
}
disabled={count=== 0}
/>
</div>
</li>
);
}}
</Query>
{({
加载,
错误,
数据,
}:QueryResult)=>{
常数计数=
data&&data.getAllData&&data.getAllData.count;
返回(
);
}}
我遇到的问题是,当缓存数据发生变化时,第二个查询组件(带有getAllData
Query的组件)不会重新呈现(第一个组件更新良好)。一切似乎都连接正确(当我打开轮询第二个组件时,会正确地重新渲染)
查询组件重新呈现时的规则是什么?我不明白为什么第一个组件重新渲染而第二个组件没有
<Query
query={Queries.getAllData}
variables={{
date: date,
ids: ids,
}}
//pollInterval={500}
>
{({
loading,
error,
data,
}: QueryResult<{ getAllData: { count: number } }>) => {
const count=
data && data.getAllData && data.getAllData.count;
return (
<li className="actions__group">
<div className="actions__item">
<Button
className={'button button--fill-green'}
onClick={this.onAction}
children={
count? (
<span className="button__badge">
{count}
</span>
) : (
undefined
)
}
disabled={count=== 0}
/>
</div>
</li>
);
}}
</Query>