2017-09-15 145 views

回答

1

現在可以!

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

1

不幸的是,我不認爲有一個書面的方式爲您的客戶設置默認策略。我認爲最近有一些關於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容器。這也將允許您覆蓋您爲任何單個查詢設置的默認值。