2017-10-02 52 views
1

リレー中Modern refetchContainerはrefetchOptions: { force: true }refetchOptions: { force: false }と同じ結果を返します。refetchContainerは、リレーのrefetchOptionsで同じ結果を返すか、または同じ結果を返しません。Modern

私は次のように再フェッチコンテナ持っている:私は、次のコードを持っている

export default createRefetchContainer(radium(UserPicker), graphql` 
    fragment UserPicker_company on Company 
    @argumentDefinitions(
    searchString: { type: "String", defaultValue: "" } 
) { 
    userSearch(text: $searchString, first: 10) { 
     edges { 
     node { 
      id 
      name 
      email 
      picture 
     } 
     } 
    } 
    } 
`, graphql ` 
    query UserPickerRefetchQuery($companyId: ID, $searchString: String) { 
    company(id: $companyId) { 
     ...UserPicker_company @arguments(searchString: $searchString) 
    } 
    } 
`); 

をのonChangeメソッドにinputタグのために:私は新しい文字を入力すると

onInputChange = (e) => { 
    const value = e.target.value; 
    this.props.relay.refetch({ searchString: value }); 
} 

リレーは、ネットワークのクエリを行い、また、私は文字を削除します。理想的には、文字が削除されるときには、以前に照会されたのと同じデータを使用する必要があります。

答えて

0

Relay Modernは、ネットワーク要求に対してデフォルトでクライアント側のキャッシュ構成を実装していません。この考え方は、キャッシュするクエリとキャッシュしないクエリを選択できるようにすることで、ユーザーにコントロールを強化することです。

RelayQueryResponseCacheを使用する実装の提案は、ここにあります。https://github.com/facebook/relay/issues/1687#issuecomment-302931855

関連する問題