この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
react-cookieを使用すると、Reactアプリにクッキー管理機能を簡単に実装することができます。
今回は、react-cookieでReactアプリにクッキー管理機能を実装して動作を確認してみました。
デモ
下記のCodeSandboxのサンドボックス環境にデモをデプロイしています。URLを別タブで開きます。
下記のような画面が開きます。
クッキーの新規作成
テキストフィールドに適当な値を入力し、[保存]をクリックします。
すると入力した値が976vb.csb.app
ドメインのクッキーとしてブラウザに保存されます。[現在の値]にはクッキーに保存されている現在の値が表示されます。また保存時にURLのname
パラメータに現在の値が追加されます。
EditThisCookieでブラウザに保存されたクッキーを確認してみると、976vb.csb.app
ドメインのクッキーとして入力した値aaa
が追加されていることが確認できます。
https://976vb.csb.app/をブラウザで再度開いても、保存されたクッキーがちゃんと取得されて[現在の値]に表示されます。
クッキーの更新
テキストフィールドに現在と異なる値を入力し、[保存]をクリックします。
現在の値とname
パラメータが更新されました。
保存されているクッキーの値も更新されています。
クッキーの削除
[削除]をクリックします。
クッキーの値が現在の値とname
パラメータから削除されました。
保存されているクッキーの値も削除されています。
コード概要
src/index.tsx
import { render } from "react-dom";
import { CookiesProvider } from "react-cookie";
import { App } from "./App";
const rootElement = document.getElementById("root");
render(
<CookiesProvider>
<App />
</CookiesProvider>,
rootElement
);
src/App.tsx
import React, { useState } from "react";
import { useCookies } from "react-cookie";
export const App: React.FC = () => {
const [inputVal, setInputVal] = useState("");
const [cookies, setCookie, removeCookie] = useCookies(["name"]);
const handlerChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setInputVal(e.target.value);
};
const handlerDelete = () => {
//クッキー名"name"のクッキーを削除
removeCookie("name");
};
const handlerSubmit = () => {
//クッキー名"name"のクッキーを設定
setCookie("name", inputVal);
};
return (
<>
<form onSubmit={() => handlerSubmit()}>
<label>
<input type="text" name="name" onChange={(e) => handlerChange(e)} />
</label>
<input type="submit" value="保存" />
<button onClick={() => handlerDelete()}>削除</button>
</form>
<div>現在の値: {cookies.name}</div>
</>
);
};
<CookiesProvider>
を使用してreact-cookie
によりクッキーが管理される範囲を指定します。useCookies()
により、React hooksを使用して、クッキーの値の取得、設定、削除を行えるようにしています。- cookiesは、現在のすべてのクッキーが含まれるJavaScriptオブジェクトです。キーがクッキー名(
name
など)となります。 - setCookieでは、
setCookie(name, value, [options])
のように使用して指定のクッキーの値を設定します。options
にはRFC6265に準じたクッキーオプション(ドメイン、パス、有効期限、SameSiteなど)を指定できます。(詳しくはこちら) - removeCookieでは、
removeCookie(name, [options])
のように使用して指定のクッキーを削除します。
- cookiesは、現在のすべてのクッキーが含まれるJavaScriptオブジェクトです。キーがクッキー名(
参考
以上