2017-05-08 61 views
4

我對此感到困惑。React Apollo:一個查詢,多個參數 - 如何緩存?

假設我現在有一個以下查詢:

export const getPokemon = gql` 
    query getPokemon($filters: AssetFilters) { 
    pokemon(filters: $filters) { 
     name, 
     generation, 
     exp 
    } 
    }`; 

默認情況下沒有過濾器的,所以一切過去了返回。現在

,我想用一個過濾器,以重新獲取如此:上述

this.props.refetch({ 
    filters: { 
    generation: '3rd' 
    } 
}); 

似乎覆蓋原始查詢的本地緩存!

我正在寫一個離線優先的應用程序,我希望這些不同的過濾排列可以單獨緩存,而不是覆蓋原始緩存。

我該如何克服這種緩存困難,讓Apollo分別緩存這些具有不同參數的查詢?

回答

3

Apollo根據調用的參數分別緩存結果中的每個字段。如果使用不同的參數調用相同的字段兩次,它將有兩個緩存條目。

使用Apollo Devtools可以看到緩存的確切內容。如果您確定使用不同參數調用查詢會覆蓋初始緩存內容,則應考慮在Apollo客戶端GitHub存儲庫上提交問題並進行復制。