【问题标题】:how to make redux store to listen to cookies?如何让redux store 监听cookies?
【发布时间】:2018-02-28 15:13:57
【问题描述】:

我有一个带有 react 和 redux 的应用程序。

我想让我的 redux 商店收听 cookie。

每当 cookie 过期时,在一段时间后,我想发送一个操作,该操作也会更新相应的存储值。

例如 每当用户登录网站时,假设我们正在生成一个身份验证令牌,我们希望将其存储在 cookie 中并设置 2 小时的到期时间。

一旦 2 小时完成,我想发送一个操作,将 redux 存储数据“isAuthenticated”更新为 false

reducer 可能看起来像这样

export const user(state ={}, action)
{
   case "cookie_expired":
    return {...state, isAuthenticated: false}
}

这样我就可以拥有单一的事实来源,即可以监听 cookie 的 redux 商店

试过 使用 setInterval,我可以查看 cookie 的可用性,但这将是一种解决方法。

有没有什么 redux 方法可以实现这一点?

【问题讨论】:

  • cookie 过期或值更改没有内置事件或回调。 SetInterval 似乎是唯一的选择。
  • 投反对票的人能否分享下投反对票的原因?

标签: reactjs cookies redux react-redux


【解决方案1】:

我只是在 Redux 中保存一些日期时间值,sessionValidUntil,此时您将 isAuthenticated 分配为 true。将此新的 redux 值设置为当前时间 + 2 小时。

然后,无论您当前在哪里检查 isAuthenticated,我都会检查一个看起来像这样的新函数;

(reduxState) => {
    return (reduxState.isAuthenticated && new Date() < reduxState.sessionValidUntil);
}

【讨论】:

  • 是的.. 这就是我不想继续检查 isAuthenticated 的重点。每当 cookie 过期时,我希望我的 redux 商店自动更新
  • 让我们说 isAUthenticated 设置为 true 并且 sessionValidUntil 设置为某个时间。现在让所有组件都已经渲染并且没有组件正在更新。现在即使我将值设置为 (reduxState.isAuthenticated && new Date()
  • 我的意思是......不......但听起来你已经想通了,所以我不会费心去帮助你。
  • 嘿,我需要你的帮助。我只是对 sessionvaliduntill 有一些疑问。如果您能提供一个有效的 jsfiddle 解决方案,那将非常有帮助。
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2016-06-09
  • 2021-10-16
相关资源
最近更新 更多