我很好奇使用下面这样的函数而不是为Redux商店创建一个新的类实例的利弊。这个设计背后的考虑是什么?
function reducer(state="gg", action){
if(action == "a"){
return "apple"
}
return state
}
function createStore(reducer) {
var state;
var listeners = []
function getState() {
return state
}
function subscribe(listener) {
listeners.push(listener)
return function unsubscribe() {
var index = listeners.indexOf(listener)
listeners.splice(index, 1)
}
}
function dispatch(action) {
state = reducer(state, action)
listeners.forEach(listener => listener())
}
dispatch({})
return { dispatch, subscribe, getState }
}
参考:https://blog.isquaredsoftware.com/2018/11/react-redux-history-implementation/
好问题:
不支持操作对象和还原器的类实例,因为类实例使序列化和反序列化变得棘手反序列化像JSON.parse(string(这样的方法将返回一个普通的旧JavaScript对象,而不是类实例。
序列化使浏览器能够用更少的内存存储已调度的所有操作以及以前的存储状态。回放和"热重新加载"存储是Redux开发者体验和Redux DevTools功能的核心。这还使反序列化的操作能够存储在服务器上,并在使用Redux进行服务器端渲染的情况下在浏览器中重新序列化。