私のGraphQLサーバからのデータを私の反応するネイティブアプリケーションにフェッチするためにreact-apolloが組み込まれています。私は、還元店を持続させ、再水和するために還元便器を使用します。還元反応を伴うアポロ
しかし、私はアポロ状態を再水和する方法を知らない。
誰でも知っているのですか?
おかげ
私のGraphQLサーバからのデータを私の反応するネイティブアプリケーションにフェッチするためにreact-apolloが組み込まれています。私は、還元店を持続させ、再水和するために還元便器を使用します。還元反応を伴うアポロ
しかし、私はアポロ状態を再水和する方法を知らない。
誰でも知っているのですか?
おかげ
あなたはredux-persist
のautoRehydrate
機能を使用することができます。それは非同期的にタイプREHYDRATE
のアクションを実行します。アクションをブラックリストに登録しない限り、すべてのストアを再水分します。
以前に実行されたクエリを実行しようとすると、ApolloはReduxストアを最初にチェックし、APOLLO_QUERY_RESULT_CLIENT
アクションが実行されていることを確認します。つまり、サーバーにクエリする代わりにクライアントストアから戻ってきます。あなたは(など、最初に、唯一のネットワークキャッシュ)、クエリがデータを取得する方法を指定するには
をfetchPolicy
を変更することができますここで基本的な設定です: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>
);
}
}
おかげで!!私の問題は、devTools()を使用し、次にautoRehydrate()を使用したことです。これがうまくいかず、私はautoRehydrate()を最初に実行してからdevTools()を実行しなければなりません。 – Carol
@Carolあなたを祝福してください。あなたのソリューションは、ちょうど3日間の爪を噛んで、髪を引き上げました。 '(typeof window .__ REDUX_DEVTOOLS_EXTENSION__!== 'undefined' || process.env.NODE_ENV!== 'production')の前に' autoRehydrate() 'を置きますか? window .__ REDUX_DEVTOOLS_EXTENSION __():(f)=> f、 '解決されたデータは、ページのリロード後に永続化されます。 – TheoG