2017-09-15 20 views
8

मेरे पास कुछ उत्परिवर्तन हैं जो कुछ refetchQueries को ट्रिगर करना चाहिए, लेकिन मुझे उन प्रश्नों की आवश्यकता है जो डिफॉल्ट के अलावा fetchPolicy है।apollo-client क्वेरी पर वैश्विक स्तर पर fetchPolicy कैसे सेट करें?

क्या प्रति प्रश्न के बजाय fetchPolicy वैश्विक स्तर पर सेट करने का कोई तरीका है? तो प्रत्येक क्वेरी पर fetchPolicy सेटिंग से बचने के लिए।

उत्तर

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 कंटेनर आयात करते हैं। इससे आपको अभी भी किसी भी व्यक्तिगत क्वेरी के लिए सेट किए गए डिफ़ॉल्ट को ओवरराइड करने की अनुमति मिलनी चाहिए।

संबंधित मुद्दे