Повторное получение с помощью Apollo обновляет все экземпляры этого запроса, даже с разными параметрами - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть 2 запроса, которые выглядят так:

const Basket = ({children}) => <Query
    query={MY_QUERY}
    variables={{ list: 'BASKET' }}>
    {children}
</Query>

const Bin = ({children}) => <Query
    query={MY_QUERY}
    variables={{ list: 'BIN' }}>
    {children}
</Query>

Теперь я использую их следующим образом:

<Basket>
    {({ data, loading, error, refetch }) => {
        return loading ? (
            <div>Loading</div>
        ) : error ? (
            <div>Error</div>
        ) : (
            <div>
                <MyTable data={data} />
                <button onClick={() => refetch()}>refetch</button>
            </div>
        );
    }}
</Basket>

<Bin>
    {({ data, loading, error, refetch }) => {
        return loading ? (
            <div>Loading</div>
        ) : error ? (
            <div>Error</div>
        ) : (
            <div>
                <MyTable data={data} />
                <button onClick={() => refetch()}>refetch</button>
            </div>
        );
    }}
</Bin>

Теперь вот проблема:

Если я нажму кнопку для повторного извлечения содержимого корзины, эти данные появятся не только в <Basket>, но и в <Bin>!

Почему это происходит?

1 Ответ

0 голосов
/ 10 февраля 2019

Если ваши запросы имеют одинаковое имя, кеш Apollo не будет знать, что возвращаемые данные различны - поэтому он обновит оба компонента.

Если изменение не поможет, опубликуйте свой код запроса для каждогозапрос

...