Альтернативный магазин избыточного магазина с индивидуальным магазином в реакции

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

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 ответ

Решение

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

setState делает то, что от него ожидают, subscribe,

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

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

Другие вопросы по тегам