реле-современный FragmentContainer вне QueryRenderer

Является ли это возможным? Можем ли мы использовать FragmentContainer вне QueryRenderer? Чего я хочу добиться: у меня есть RefetchContainer с SectionList. Каждый элемент внутри каждого раздела представляет собой FragmentContainer. Когда я выбираю элемент из раздела, я хочу открыть новый экран, на котором я отображаю FlatList этих элементов. Данные, которые я передаю из SectionList при выборе элемента, представляют собой список FragmentContainer. Таким образом, я не вижу данные, поэтому мне нужно использовать для них фрагменты. Если я использую только фрагменты внутри FlatList, я получаю отсутствующую среду из RelayFragmentContainer. Поэтому я добавил QueryRenderer в качестве родителя для FlatList, где я снова запрашиваю один и тот же раздел. Но это делает дополнительный запрос QueryRenderer. Я хочу отобразить данные с предыдущего экрана. По крайней мере, я передаю этот список FragmentContainer как cacheConfig и возвращаю его из метода fetchQuery, но json отличается от ответа json, поэтому это не необработанные данные, а уже __fragments, поэтому Relay не может его проанализировать.


person parohy    schedule 30.11.2017    source источник


Ответы (1)


Было бы неплохо получить несколько примеров кода в этом вопросе о том, как выглядят ваши компоненты и фрагменты. Тем не менее, вы можете захотеть провести расследование с помощью директивы @mask.

Я взял пример из документации Relay и включил его сюда:

module.exports = createFragmentContainer(
  ({ user }) => ...,
  graphql`
    fragment Component_user on User {
      internUser {
        manager {
          ...Component_internUser @relay(mask: false)
        }
        .... on Employee {
          admins {
            ...Component_internUser @relay(mask: false)
          }
          reports {
            ...Component_internUser @relay(mask: false)
          }
        }
      }
    }

    fragment Component_internUser on InternUser {
      id
      name
    }
  `,
);

При использовании @mask данные, включенные из фрагмента, будут доступны в компоненте, в котором размещен фрагмент. Документация по ретрансляции доступна здесь: https://facebook.github.io/relay/docs/relay-directives.html#relay-mask-boolean

person Samuel    schedule 30.11.2017
comment
О, спасибо ! Это не на 100% то, что я искал, но это служит цели больше, чем я ожидал достичь здесь! Большое спасибо! - person parohy; 02.12.2017