Альтернативный магазин избыточного магазина с индивидуальным магазином в реакции - PullRequest
0 голосов
/ 21 ноября 2018

Я изучаю этот код компонента реакции:

https://github.com/algolia/react-instantsearch/blob/master/packages/react-instantsearch-core/src/core/createStore.js

export default function createStore(initialState) {
  let state = initialState;
  const listeners = [];
  function dispatch() {
    listeners.forEach(listener => listener());
  }
  return {
    getState() {
      return state;
    },
    setState(nextState) {
      state = nextState;
      dispatch();
    },
    subscribe(listener) {
      listeners.push(listener);
      return function unsubcribe() {
        listeners.splice(listeners.indexOf(listener), 1);
      };
    },
  };
}

Я был удивлен, что этот код не используется, но есть собственный магазин?кто-то может мне объяснить об этом коде?это способ использовать глобальное хранилище и не использовать избыточное хранилище?

это строки:

listeners.forEach(listener => listener());

          return function unsubcribe() {
            listeners.splice(listeners.indexOf(listener), 1);
          };

что значит?

1 Ответ

0 голосов
/ 21 ноября 2018

Это упрощенная реализация Redux-подобного магазина.Он не включает в себя другие сущности Redux, такие как промежуточное ПО или редукторы.

setState делает именно то, что от него ожидается, так же, как и subscribe.

listeners.forEach(listener => listener()) уведомляет слушателей об обновлении состояния.

return function unsubcribe() {...} возвращает функцию для отмены подписки слушателя на обновления состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...