我似乎无法使用react-cookie设置cookie的过期...这是我的设置:
import { Cookies } from 'react-cookie'
const cookies = new Cookies()
import moment from 'moment'
以下尝试失败了:
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继续呈现:
Expires
When the browsing session ends
答案 0 :(得分:4)
来自Cookies
的{{1}}似乎已移至react-cookie
包。
所以以下内容应该有效:
universal-cookie
答案 1 :(得分:2)
一年后过期的示例
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
答案 2 :(得分:2)
有点晚了,但是如果有人在外面,仍然会遇到麻烦。在通用Cookie中,请尝试使用constraints = (
{'type': 'eq', 'fun': lambda x: portfolio_return(x) - target},
{'type': 'eq', 'fun': lambda x: np.sum(x) - 1},
{'type': 'eq', 'fun': lambda x: np.sum(x[x>0]) - 0.65},
{'type': 'eq', 'fun': lambda x: np.sum(x[x>0]) - 0.35}
)
选项而不是maxAge
。
这是我如何工作的摘要。
expires
说实话,最好使用常规的cookie设置。 call operator
无论如何,无论如何加载,您都将不得不使用cookies.set("theme", 0, {
path: "/",
maxAge: 1000000
});
与已设置的cookie进行交互。这是我的代码片段。连同useState挂钩供参考。
像此Info Here中所示,document.cookie
会向您显示所有这样输出的cookie的列表。
document.cookie
因此,写出类似这样的内容。用“主题”代替您的cookie名称。这段代码将为您带来价值。
cookieOne=1; cookieTwo=poopy; cookieThree=etc
无论如何,您都会得到一个字符串,因此,如果它是一个int或其他任何适当转换的字符串。这是我的useState挂钩,其中我的cookie需要是一个int。
const docThemeCookie = document.cookie
.split("; ")
.find((row) => row.startsWith("theme"))
.split("=")[1];
希望对仍然陷于困境的人有所帮助!
TLDR;
使用const [theme, setTheme] = useState(parseInt(docThemeCookie, 10));
代替maxAge
。
使用expires
检查状态的初始cookie值。
答案 3 :(得分:0)
好的,所以这对于你们中的一些人来说可能是一个简单的解决方案。 (包括我自己)在添加 30 天或 2592000 秒的最大年龄之前,我让我的应用程序在 .set 方法中使用没有 maxAge 属性的通用 cookie 运行。当我将 maxAge: 2592000 添加到我的 set cookie 方法时,浏览器说它仍然会在会话结束时过期。对我来说,解决方法是清除开发工具 -> 应用程序 -> 存储 -> 清除站点数据中的应用程序数据,然后重新登录我的应用程序,并将 cookie 正确设置为在 30 天后过期。供参考:
cookies.set("loggedinUserId", response.data.userID, { path: '/', maxAge: 2592000 });