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 可以 本身被视为一个可观察对象,其他可观察对象可以监听状态更新。但是在实际实现中没有使用可观察量。
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 可以 本身被视为一个可观察对象,其他可观察对象可以监听状态更新。但是在实际实现中没有使用可观察量。