2017-03-29 42 views
5

Grafik SQL sunucumdan verileri, benim yerel uygulamasına aktarmak için react-apollo'u entegre ettim. Ben redux deposunu ısrar etmek ve rehidrate etmek için redux-perist kullanın.Yeniden yerleştirme özelliğine sahip Apollo

Ama apollo durumumu nasıl yeniden sulandıracağımı bilmiyorum.

Bunu nasıl yapabileceğimi bilen var mı?

Teşekkür

cevap

3

Sen redux-persist ait autoRehydrate özelliğini kullanabilirsiniz. Kara listeye alınmadıkça tüm depoları rehidrate edecek olan REHYDRATE türünde bir eylemi eşzamanlı olarak çalıştıracaktır.

Daha önce yürütülen bir sorguyu çalıştırmayı denerseniz, Apollo önce Redux mağazanızı kontrol edecek ve bir APOLLO_QUERY_RESULT_CLIENT eylem yürütmesini görmeniz gerekir (bu, sunucuyu sorgulamak yerine istemci deposundan döndüğü anlamına gelir). Sorgu (vb, önce sadece önbellek ağ) verilerini alır nasıl

Burada temel bir düzmece belirtmek için fetchPolicy değiştirebilirsiniz: srtucker22 @

import React, { Component } from 'react'; 
import { ApolloProvider } from 'react-apollo'; 
import { createStore, combineReducers, applyMiddleware, compose } from 'redux'; 
import ApolloClient, { createNetworkInterface } from 'apollo-client'; 
import { persistStore, autoRehydrate } from 'redux-persist'; 
import { AsyncStorage } from 'react-native'; 

const networkInterface = createNetworkInterface({ uri: 'http://localhost:8080/graphql' }); 

export const client = new ApolloClient({ 
    networkInterface: networkInterface, 
}); 

const store = createStore(
    combineReducers({ 
    apollo: client.reducer(), 
    }), 
    {}, // initial state 
    compose(
    applyMiddleware(client.middleware()), 
    autoRehydrate(), 
), 
); 

// persistent storage 
persistStore(store, { 
    storage: AsyncStorage, // or whatever storage you want 
}); 

export default class App extends Component { 
    render() { 
    return (
     <ApolloProvider store={store} client={client}> 
     <YourApp /> 
     </ApolloProvider> 
    ); 
    } 
} 
+1

Teşekkür !! Benim problemim devTools() ve sonra autoRehydrate() kullanıldı. Bazı garip sebeplerden dolayı bu işe yaramıyor, önce autoRehydrate() yapmalıyım ve sonra devTools() .. ve şimdi çalışıyor! – Carol

+0

@Carol Sizi korusun. Çözümünüz, 3 gün tırnak ısırma ve saç çekme işlemlerini sona erdirdi. AutoRehydrate() 'i daha önce yerleştirme (window .__ REDUX_DEVTOOLS_EXTENSION__! == 'undefined' || process.env.NODE_ENV! == 'production') window ._____ REDVID_DEVTOOLS_EXTENSION __(): (f) => f, 'bir sayfa yeniden yüklendikten sonra çözülmüş veriler devam ediyor. – TheoG

İlgili konular