【问题标题】:redux store alternative with customized store in reactredux 商店替代品与定制商店反应
【发布时间】:2018-11-21 10:44:54
【问题描述】:

我正在研究这个反应组件的代码:

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);
      };
    },
  };
}

我很惊讶这个代码不使用,而是一个自己的商店?有人可以解释一下这段代码吗?这是一种使用全局存储而不使用 redux-store 的方式吗?

这行:

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

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

什么意思?

【问题讨论】:

    标签: reactjs react-redux


    【解决方案1】:

    这是类 Redux 存储的简化实现。它不涉及其他 Redux 实体,例如中间件或减速器。

    setState 完全符合预期,subscribe 也是如此。

    listeners.forEach(listener => listener()) 通知监听器状态已更新。

    return function unsubcribe() {...} 返回一个函数来取消订阅监听器的状态更新。

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2019-07-13
      相关资源
      最近更新 更多