Triggering Refresh to Cookie in `useCookie`
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- typescript
- 领域
- frontend
调研方向
Start at the existing useCookie hook and inspect how it reads and updates the cookie value. Compare its current return value and update behavior with the requested refresh operation. Done means an external cookie change can be read through the hook after refresh is called, with deletion still reflected in the hook state.
由索引模型根据 Issue 内容生成。
描述
Is your feature request related to a problem? Please describe.
My cookie is changed by a request done in some API call. I need to react to that change. The new cookie value is not by useCookie() because it assumes that all changes are done through it.
Describe the solution you'd like
A refresh would probably suffice. Something like this:
import { useCallback, useState } from 'react';
import Cookies from 'js-cookie';
const useCookie = (
cookieName: string
): [string | null, (newValue: string, options?: Cookies.CookieAttributes) => void, () => void, () => void] => {
const [value, setValue] = useState<string | null>(() => Cookies.get(cookieName) || null);
const updateCookie = useCallback(
(newValue: string, options?: Cookies.CookieAttributes) => {
Cookies.set(cookieName, newValue, options);
setValue(newValue);
},
[cookieName]
);
const refreshCookie = useCallback(() => {
const newValue = Cookies.get(cookieName);
if (newValue === value) {
return;
}
if (newValue !== undefined) {
updateCookie(newValue);
} else {
deleteCookie();
}
}, [cookieName, updateCookie, value]);
const deleteCookie = useCallback(() => {
Cookies.remove(cookieName);
setValue(null);
}, [cookieName]);
return [value, updateCookie, deleteCookie, refreshCookie];
};
export default useCookie;
(not tested)
Usage:
const [value, update, delete, refresh] = useCookie("sessionData");
// ...
fetch("/settings/update").then(() => refresh());
Describe alternatives you've considered
I'm open for suggestions
- 主要语言
- TypeScript
- 星标
- 44k
- 派生
- 3.3k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
streamich/react-use 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
-
Add Generic Fn for useDebounce可能已有人在做 @itsmejay80 于 191 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 64/100
-
useVideo.story.tsx - sampleVideo can not be loaded可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 1/5 1 小时以内 新手友好度 62/100
-
useSlider: event callbacks are not updated可能已有人在做 @erykpiast 于 1838 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 62/100
查看 streamich/react-use 的全部 Issue
相似的 Issue
-
engine-rs P3 review-deferral wasm
难度 2/5 1-3 小时 新手友好度 77/100
maniator/verticopolis#1154 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
Bug
难度 2/5 1-3 小时 新手友好度 76/100
telerik/kendo-react#3861 ·
维护者通常 1 天内回复
-
[bug]: use-mobile.ts uses pixel logic, causing UI state de-sync with Tailwind CSS rem breakpoints未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
task
难度 2/5 1-3 小时 新手友好度 72/100