Ant*_*rma 9 html browser reactjs react-redux
假设我的组件“App”状态中有一个小对象。那么要在 redux 中保存状态,为什么我不能将其保存在会话存储中呢?这有什么实质性的区别吗?
rav*_*l91 14
你可以这样做。
不同的是,
React
足够聪明,可以DOM
在您使用state
和更新state
using时更新您的setState
。当您setState
在 React 应用程序中使用时,它只是重新渲染您的组件,如果您在组件中使用该状态值来显示一些值/数据,这些值/数据会在您的组件上更新。
当您在其中存储数据时,sessionStorage
您的应用程序不会reacts
自动更改sessionStorage
值。在这种情况下,您的组件将不会重新渲染,并且您的更改不会在您的组件上更新。但是对于这种情况,您有一个名为forceUpdate()
从文档中,
调用 forceUpdate() 将导致在组件上调用 render(),跳过 shouldComponentUpdate()。这将触发子组件的正常生命周期方法,包括每个子组件的 shouldComponentUpdate() 方法。如果标记发生变化,React 仍然只会更新 DOM。
虽然你有forceUpdate
,通常你应该尽量避免的所有使用forceUpdate()
和只读this.props
,并this.state
在render()
。
小智 6
浏览器存储仅允许与字符串值关联的键,没有什么复杂的,因此简单地从本地/会话中获取不同类型的数据所需的代码本身就很糟糕。
Redux 的“存储状态”部分确实是最无趣的部分。Redux 的重要部分是使用操作和化简器的模式,并且组件可以订阅这些状态更改,这样,如果化简器更新状态,使用该状态的组件将自动重新渲染。使用浏览器存储技术实际上只能解决“状态位于哪里”部分。您仍然需要更新该状态并让组件知道在状态更新时重新渲染的机制
会话存储也可能为零,例如,仅在 Safari(包括 iOS 上)中使用隐私浏览模式会将存储配额设置为零
还处理 React 应用程序的 localStorage 和 sessionStorage,将其视为有点像状态。它是代码库中最容易出错、最不可预测、最令人头疼的代码。
如果您仍然想使用它们,您还可以使用 redux-locastorage将存储保存到本地存储或 redux-sessionstorage将存储保存到会话存储
归档时间: |
|
查看次数: |
9025 次 |
最近记录: |