Является ли передача избыточного хранилища и отправка через Thunk разумной альтернативой прямому импорту избыточного хранилища в файл? - PullRequest
0 голосов
/ 27 марта 2020

В соответствии с этим Redux FAQ: Можно или нужно создать несколько магазинов? Могу ли я напрямую импортировать свой магазин и использовать его в компонентах? , не следует импортировать их непосредственно для использования.

В React Components мы могли бы использовать оболочку connect.

У меня есть клиент, с которым я хочу управлять всеми коммуникациями и логами c, касающимися сторонних услуг. В идеале этот клиент мог бы отправлять и читать состояние из хранилища.

Чтобы избежать прямого импорта хранилища, я планирую использовать thunk и выполнить следующие действия:

Action Creator :

export function initializeClient() {
  return async (dispatch, getState) => {

    const { token } = await Api.createToken();

    return Client.initialize(token, dispatch, getState);
  }
}

Внутри клиента я бы по сути сделал это:

Клиент

class Client {
  dispatch;
  getState;

  async initializeClient(token, dispatch, getState) {
    this.dispatch = dispatch;
    this.getState = getState;

    // Process token
  }

  // Other functions...
}

То, что я сделал, могло бы быть анти-паттерн, но я чувствую, что он позволил бы ему по-прежнему выполнять рендеринг на стороне сервера и проходит через импорт магазина напрямую.

Моя самая большая проблема - хранить ссылку на dispatch и getState так долго, но я не могу себе представить, что функции когда-либо изменятся ... так что я думаю, что это должно быть хорошо?

1 Ответ

0 голосов
/ 27 марта 2020

Это будет работать, я думаю, но я бы порекомендовал поместить этого клиента в пользовательское промежуточное ПО вместо :

Промежуточное ПО - это подходящее место для постоянных соединений, таких как веб-сокеты в приложение Redux по нескольким причинам:

  • Промежуточное программное обеспечение существует на протяжении всего жизненного цикла приложения
  • Как и в самом хранилище, вам, вероятно, нужен только один экземпляр данного соединения, который все приложение может использовать
  • Промежуточное ПО может видеть все отправленные действия и сами действия по отправке. Это означает, что промежуточное программное обеспечение может выполнять отправленные действия и превращать их в сообщения, отправляемые через веб-сокет, и отправлять новые действия при получении сообщения через веб-сокет.
  • Экземпляр подключения веб-сокета не сериализуем, поэтому он не принадлежат самому состоянию магазина
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...