Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 阿波罗查询组件的重新呈现有哪些规则?_Graphql_React Apollo - Fatal编程技术网

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}

我有一个具有以下定义的GraphQL字段:

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>