简介
redux-session-storage-gatorade 是一个状态管理库 redux 的扩展,它提供了一个简单的方式将 redux 的状态保存到浏览器本地存储中,并且支持使用加密算法对状态进行加密保护。它使用了 sessionStorage 作为数据存储介质,因此可以避免 cookies 和 localStorage 的一些限制,比如在隐身模式下cookies不可用的问题。
本教程将介绍如何安装、配置和使用 redux-session-storage-gatorade。
安装
使用 npm 安装:
npm install redux-session-storage-gatorade
配置
在你的 redux 应用中添加 redux-session-storage-gatorade 插件。首先创建一个中间件来保存数据到 sessionStorage:
-- -------------------- ---- ------- -- --------------------- ------ ----- --------- - -- -- - --- - ----- ----------- - -------------------------------- -- ------------ --- ----- - ------ ---------- - ------ ------------------------ - ----- ----- - ----------------- ------ ---------- - -- ------ ----- --------- - ----- -- - --- - ----- ----------- - ---------------------- ------------------------------- ------------- - ----- ----- - ----------------- - --
然后将其添加到 redux 的中间件列表中:
-- -------------------- ---- ------- -- --------------------- ------ - ------------ ---------------- ------- - ---- -------- ------ --------------- ---- -------------- ------ - ---------- --------- - ---- ------------------- ------ ----------- ---- ------------- ----- ---------- - ------------------ ----- ----------------- - -------- ------------------------------- ----------------------------------- -- ------------------------------------- -- ----- -------------- - ------------ ----- ----- - ------------ ------------ --------------- ----------------- -- ------------------ -- - ----------- -------- ------------------------ --- --- ------ ------- ------
现在,每当 redux 的状态改变时,配置的中间件将自动将新的状态保存到 sessionStorage 中。
使用
在你的 redux 应用中使用 redux-session-storage-gatorade 插件:
-- -------------------- ---- ------- -- --------------------- ------ - --------------- - ---- -------- ------ - -------------- - ---- --------------------------------- ------ -------------- ---- ------------------- ----- ------------- - - ---- ------- -------- ------ -------- -------------- -- ----- ----------- - ----------------- -------- ----------------------------- --------------- --- ------ ------- ------------
在这个例子中,我们将 counterReducer 的状态保存在 sessionStorage 中,并使用一个 key(root)将其存储在 sessionStorage 中。我们还可以指定是否加密(encrypt)存储的数据。
现在,你的 redux 应用会将新的状态自动保存到 sessionStorage 中,且当用户刷新页面后,应用会从 sessionStorage 中恢复之前的状态。
示例代码
下面是一个计数器应用的完整示例代码,使用了 redux-session-storage-gatorade 插件。
-- -------------------- ---- ------- -- ---------- ------ ----- ---- -------- ------ - ------------ ----------- - ---- -------------- ------ - ---------- --------- - ---- ------------ -------- ----- - ----- ------- - ----------------- -- --------------- ----- -------- - -------------- ------ - ---- ---------------- ------------ -------------- ------- ----------- -- --------------------------------- ------- ----------- -- --------------------------------- ------ -- - ------ ------- ----
-- -------------------- ---- ------- -- -------------------- ------ ----- --------- - -- -- -- ----- ----------- --- ------ ----- --------- - -- -- -- ----- ----------- ---
-- -------------------- ---- ------- -- ------------------------------ ----- -------------- - ------ - -- ------- -- - ------ ------------- - ---- ------------ ------ ----- - -- ---- ------------ ------ ----- - -- -------- ------ ------ - -- ------ ------- ---------------
-- -------------------- ---- ------- -- --------------------- ------ ----- --------- - -- -- - --- - ----- ----------- - -------------------------------- -- ------------ --- ----- - ------ ---------- - ------ ------------------------ - ----- ----- - ----------------- ------ ---------- - -- ------ ----- --------- - ----- -- - --- - ----- ----------- - ---------------------- ------------------------------- ------------- - ----- ----- - ----------------- - --
-- -------------------- ---- ------- -- --------------------- ------ - --------------- - ---- -------- ------ - -------------- - ---- --------------------------------- ------ -------------- ---- ------------------- ----- ------------- - - ---- ------- -------- ------ -------- -------------- -- ----- ----------- - ----------------- -------- ----------------------------- --------------- --- ------ ------- ------------
-- -------------------- ---- ------- -- --------------------- ------ - ------------ ---------------- ------- - ---- -------- ------ --------------- ---- -------------- ------ - ---------- --------- - ---- ------------------- ------ ----------- ---- ------------- ----- ---------- - ------------------ ----- ----------------- - -------- ------------------------------- ----------------------------------- -- ------------------------------------- -- ----- -------------- - ------------ ----- ----- - ------------ ------------ --------------- ----------------- -- ------------------ -- - ----------- -------- ------------------------ --- --- ------ ------- ------
使用上面的示例代码,你可以创建一个计数器应用,并使用 redux-session-storage-gatorade 插件将其状态保存到 sessionStorage 中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005731481e8991b448e93ee