Передача данных кеша Apollo Client с помощью Apollo Query - PullRequest
0 голосов
/ 19 октября 2018

У меня есть два запроса:

const GET_FILTERS = gql`
  query getFilters {
    filters @client {
      id
      title
      selected
    }
  }
`

И

const GET_POSTS = gql`
  query getPosts {
    posts {
      id
      author
      status
    }
  }
`

Первый получает данные из локального состояния, используя apollo-link-state, а второй - внешний вызов.

У меня есть HOC для получения постов, настроенных так:

const withPosts = (Component) => (props) => (
  <Query
    query={GET_POSTS}  
  >
    {({loading, data, error})} => {
      if(loading) return null
      if(error) return null
      return <Component {...data} {...props}/>
    }}
  </Query>
)

Выбор постов в порядке, но я хотел бы добавить все, что возвращается из запроса GET_FILTERSс каждым вызовом GET_POSTS запроса?

Одна вещь, которую я мог бы сделать, это обернуть withPost в другую, скажем, withFilters HOC, и передать результат в GET_POSTS запрос в виде переменных, ноМне было интересно, есть ли какой-либо другой способ доступа к этим данным через некоторый контекст и, например, cache.readQuery, используя только withPost HOC.

1 Ответ

0 голосов
/ 20 октября 2018

Apollo имеет «нативные» инструменты для шаблона HOC , вы можете составлять множество (именованных) запросов и мутаций для улучшения компонента.ИМХО, это намного более читабельно и мощно, чем использование компонентов запроса / мутаций.

Вы можете передавать запрашиваемые значения (фильтры) как переменные через data.fetchMore - конечно, вы можете использовать компонент запроса для 'внутренний запрос '.

Использование кэша напрямую не требуется, в то время как опция запроса ' cache-first 'fetchPolicy может использоваться.

...