首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-cookie无法设置expires或maxAge

react-cookie无法设置expires或maxAge
EN

Stack Overflow用户
提问于 2017-12-18 07:07:30
回答 4查看 12.3K关注 0票数 6

我似乎不能用react- cookie设置cookie的过期时间...下面是我的设置:

代码语言:javascript
复制
import { Cookies } from 'react-cookie'
const cookies = new Cookies()
import moment from 'moment'

以下尝试已失败:

代码语言:javascript
复制
cookies.set('cookieName', {key: value}, {path: '/', expires: new Date(Date.now()+2592000)})
cookies.set('cookieName', {key: value}, {path: '/', expires: moment().add(30, "days")})
cookies.set('cookieName', {key: value}, {path: '/', maxAge: 2592000})

Chrome继续呈现:

代码语言:javascript
复制
Expires
When the browsing session ends
EN

回答 4

Stack Overflow用户

发布于 2017-12-18 07:28:34

react-cookie中的Cookies似乎已经被移到了universal-cookie包中。因此,下面的代码应该可以工作:

代码语言:javascript
复制
import Cookies from 'universal-cookie';

const cookies = new Cookies();
cookies.set('cookieName', {key: value}, {path: '/', expires: new Date(Date.now()+2592000)});
票数 13
EN

Stack Overflow用户

发布于 2018-05-24 06:24:20

一年后到期的示例

代码语言:javascript
复制
import Cookies from 'universal-cookie';

const cookies = new Cookies();
const current = new Date();
const nextYear = new Date();

nextYear.setFullYear(current.getFullYear() + 1);

cookies.set('cookieName', true, {
    path: '/',
    expires: nextYear,
});

您可以在此处查看有关如何使用Date.set https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear的详细信息

票数 4
EN

Stack Overflow用户

发布于 2020-08-10 06:55:58

有点晚了,但如果有人还在这方面有问题的话。在universal-cookie中,尝试使用maxAge选项而不是expires

下面是我如何让我的应用工作的一小段代码。

代码语言:javascript
复制
cookies.set("theme", 0, {
    path: "/",
    maxAge: 1000000
});

老实说,你最好使用普通的cookie设置。Info Here

无论如何,你将不得不使用document.cookie与你已经设置好的cookie进行交互。下面是我的代码片段。以及useState钩子以供参考。

如此doc所示,document.cookie向您显示了所有cookie输出的列表,如下所示。

cookieOne=1; cookieTwo=poopy; cookieThree=etc

所以,写出像这样的东西。将“主题”替换为您的cookie名称。这段代码将为您提供该值。

代码语言:javascript
复制
const docThemeCookie = document.cookie
  .split("; ")
  .find((row) => row.startsWith("theme"))
  .split("=")[1];

不管发生什么,你都会得到一个字符串,所以如果它是一个int类型或者其他类型的类型,就可以进行适当的转换。这是我的useState钩子,我的cookie需要是一个整数。

代码语言:javascript
复制
const [theme, setTheme] = useState(parseInt(docThemeCookie, 10));

希望这对那些仍然被困住的人有所帮助!

TLDR;

使用maxAge而不是expires

使用document.cookie检查状态的初始Cookie值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47860326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档