2015-12-04 4 views
2

С реле, вы создаете Реагировать компонент, как обычно:Обновления Реагировать состояния с реле

class TodoApp extends React.Component { 
    ... 
} 

А затем компонент завернутые в реле контейнера:

export default Relay.createContainer(TodoApp, { 
    ... 
}); 

Контейнера реле будет получать данные с помощью GraphQL, а затем обновите состояние. Это компонент более высокого порядка, и это состояние затем передается как реквизит для его детей.

Это не (или не похоже) совместимое с реализацией потока, как Redux. Redux имеет один объект глобального состояния, и он также имеет компоненты более высокого порядка, которые передают реквизиты до презентационных компонентов. Поэтому я не вижу, как в настоящее время могут сосуществовать как хранилища Redux, так и контейнеры Relay.

Итак, как мы должны обновлять состояние, которое не поступает из базы данных? Как это состояние должно управляться с помощью Relay?

ответ

0

Эти вещи все еще обсуждаются, и текущее состояние Redux и Relay может плохо сочетаться, если вы используете контейнер Relay.

Вы можете присоединиться к обсуждению here

5

В то время как я не могу предложить вам рекомендации по использованию их вместе, технически вы определенно можете иметь несколько компонентов более высокого порядка, применяются один за другим:

class TodoApp extends React.Component { 
    // ... 
} 

TodoApp = connect(
    // ... 
)(TodoApp); 

TodoApp = Relay.createContainer(TodoApp, { 
    // ... 
}); 

export default TodoApp; 

Я не уверен, что это имеет большой смысл, но это легко выполнимо.

+1

Релейный контейнер должен быть более высокого уровня, чем контейнер Redux, в противном случае реле не может передать фрагменты правильно. – PSWai

+0

@ParkSoonWai Исправлено, спасибо. –

0

Я сделал это следующим образом для приложения чата:

  1. компонент чата (ChatComponent) немой компонент, который ожидает, что все данные, чтобы прийти в качестве реквизита реагирует. Он также требует функции redux dispatch в качестве опоры, чтобы он мог отправлять действия, когда кто-то хочет отправить новое сообщение. Это «частный» компонент и обернут ...
  2. ChatComponentRelay - это отображает ChatComponent, но является компонентом реле, который также подключен к магазину redux. Он использует один из методов жизненного цикла (не конструктор) для отправки данных, полученных через реле, в хранилище redux. Это компонент, который используется остальной частью приложения, и в основном просто является прокси-сервером для базового немого ChatComponent. Он отображает ChatComponent, передавая все данные в своих реквизитах из магазина redux, а также функцию redux dispatch.
Смежные вопросы