我对这个问题进行了一些搜索,但发现了非常模糊的答案。在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异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:
我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢
下面是一个简单的场景: 用户单击“Create order”:将创建一个订单(首先保持其状态=NEW) 用户完成订单填写后,单击SAVE-->state is now Submited 当另一个检查订单并验证它时,必须进行一个过程。只有在调用了其他一些服务并给予许可时,才会验证该订单。 整个工作流程是: null null 谢谢
我觉得Angular对模型的使用让人困惑。Angular似乎采取的方法是,模型可以是任何你喜欢的--即。Angular不包含显式的模型类,您可以使用常规JavaScript对象作为模型。 “编辑”这个问题的第二个答案很有趣,也很接近我目前使用的。
问题内容: 我正在使用Redux进行状态管理。 如何将商店重置为初始状态? 例如,假设我有两个用户帐户(和)。 想象以下事件序列: 用户登录到该应用程序并执行某些操作,因此我们在存储中缓存了一些数据。 用户注销。 用户无需刷新浏览器即可登录应用程序。 此时,缓存的数据将与关联,我想对其进行清理。 当第一个用户注销时,如何将Redux存储重置为其初始状态? 问题答案: 一种方法是在应用程序中编写根减
我安装了一些仅在特定工作区中启用的扩展。 通过设置,通常工作区特定的东西会保存在工作区文件夹中的. vscode/settings.json中。然而,扩展似乎不是这种情况。 我知道扩展本身也安装在。vscode/extensions在user profile文件夹中,但我找不到任何指示它们是启用还是禁用的内容。这适用于本地、远程和给定工作区。 检查设置同步似乎会显示一个extensions.jso