Reduxjs 和 Observables

Reduxjs and Observables

Observables 在实现 redux 库中扮演什么角色?

我一直想知道 action 是如何与 reducer 通信的。在编写代码时,这些函数不会相互调用。 (这是最令人困惑的部分)

我可以看出它们是通过类型连接的,这些类型在使 redux 库正常工作中的作用是什么?

这个模式在图表上看起来如何?让我全神贯注这件事会很有帮助。只是 redux 设计没有反应或任何其他库或框架。

我想了解库的底层机制,而不是如何使用它

谢谢。

Redux 与此类可观察对象无关。

基本的 Redux 存储实现如下所示:

function createStore(reducer, preloadedState) {
  let state = preloadedState
  const listeners = []

  function getState() {
    return state
  }

  function subscribe(listener) {
    listeners.push(listener)
    return function unsubscribe() {
      const index = listeners.indexOf(listener)
      listeners.splice(index, 1)
    }
  }

  function dispatch(action) {
    state = reducer(state, action)
    listeners.forEach(listener => listener())
  }

  dispatch({ type: '@@redux/INIT' })

  return { dispatch, subscribe, getState }
}

调用 store.dispatch(action) 导致商店 运行 state = reducer(state, action)。确实只有 one “root reducer” 功能。但是,我们通常通过 splitting it up into many smaller "slice reducer" functions to do the work 来实现根减速器,这使得它更易于维护。

所以,最后它“只是”一系列正常的函数调用:

  • store.dispatch(action)
    • reducer(state, action)
      • postsReducer(state.posts, action)

话虽如此,Redux store 可以 本身被视为一个可观察对象,其他可观察对象可以监听状态更新。但是在实际实现中没有使用可观察量。