在Redux中,状态实际存储在哪里?
我对这个问题进行了一些搜索,但发现了非常模糊的答案。在redux中,我们知道状态存储为对象。但是这种状态实际上存储在哪里?它是否以某种方式保存为文件,以后我们可以访问?我所知道的是,它不会以Cookie格式或浏览器的本地存储方式存储它。
回答:
Redux中的状态存储在Redux存储中的内存中。
这意味着,如果刷新页面,该状态将消失。
您可以想象该商店看起来像这样:
function createStore(reducer, initialState) { let state = initialState // <-- state is just stored in a variable that lives in memory
function getState() {
return state
}
function dispatch(action) {
state = reducer(state, action) // <-- state gets updated using the returned value from the reducer
return action
}
return {
getState,
dispatch
}
}
redux中的状态只是一个保留在内存中的变量,因为所有redux函数都通过状态引用(通过closure)。
这是正在发生的事情的简化示例:
function example() { let variableAvailableViaClosure = 0
function incrementTheClosureVariable() {
variableAvailableViaClosure += 1
}
function getTheClosureVariable() {
return variableAvailableViaClosure
}
return {
incrementTheClosureVariable,
getTheClosureVariable
}
}
let data = example()
// at this point example is finished
// but the functions it returned
// still have access to the (internal) variable via closure
console.log(
data.getTheClosureVariable() // 0
)
data.incrementTheClosureVariable()
console.log(
data.getTheClosureVariable() // 1
)
此外,声明
在redux中,我们知道状态存储为对象。
是不正确的。redux中的状态可以是任何有效的javascript值,而不仅仅是对象。通常,将它作为对象(或像数组这样的特殊对象)是最有意义的,因为它允许更灵活的数据结构(但是,如果您愿意,可以将状态设为数字)
。
查看实际的Redux
实现以获取更多详细信息。
如果希望状态保留在cookie或localStorage中,则可以增强存储,以便在更新内存中的状态之外,还将状态保存到所需的存储中(并在初始化存储时从该存储中加载)
以上是 在Redux中,状态实际存储在哪里? 的全部内容, 来源链接: utcz.com/qa/430950.html