我有一些應該觸發一些refetchQueries的突變,但我需要這些查詢有一個fetchPolicy比默認。如何在apollo-client查詢上全局設置fetchPolicy?
有沒有辦法在全局範圍內設置fetchPolicy而不是每個查詢?所以要避免在每個查詢中設置fetchPolicy。
我有一些應該觸發一些refetchQueries的突變,但我需要這些查詢有一個fetchPolicy比默認。如何在apollo-client查詢上全局設置fetchPolicy?
有沒有辦法在全局範圍內設置fetchPolicy而不是每個查詢?所以要避免在每個查詢中設置fetchPolicy。
現在可以!
const defaultOptions = {
watchQuery: {
fetchPolicy: 'cache-and-network',
errorPolicy: 'all',
},
query: {
fetchPolicy: 'cache-and-network',
errorPolicy: 'all',
},
mutate: {
errorPolicy: 'all',
},
};
const client = new ApolloClient({
link,
cache,
defaultOptions,
});
查看文檔:Setup and options
不幸的是,我不認爲有一個書面的方式爲您的客戶設置默認策略。我認爲最近有一些關於making the default configurable的交談。
但是,暫且可以爲graphql
容器創建一個簡單的包裝來獲得相同的結果。這樣的東西應該工作:
const DEFAULT_FETCH_POLICY = 'network-only'
export const graphqlWrapper = (query, config = {}) => {
if (!config.options) config.options = {}
if (config.options instanceof Function) {
const optionsFn = config.options
config.options = (props) => {
const options = optionsFn.apply(optionsFn, [props])
options.fetchPolicy = options.fetchPolicy || DEFAULT_FETCH_POLICY
return options
}
} else {
config.options.fetchPolicy = config.options.fetchPolicy || DEFAULT_FETCH_POLICY
}
return graphql(query, config)
}
然後只是導入包裝,而不是graphql
容器。這也將允許您覆蓋您爲任何單個查詢設置的默認值。