[React] react-cookieでクッキーを管理してみた
こんにちは、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
パラメータから削除されました。
保存されているクッキーの値も削除されています。
コード概要
import { render } from "react-dom"; import { CookiesProvider } from "react-cookie"; import { App } from "./App"; const rootElement = document.getElementById("root"); render( <CookiesProvider> <App /> </CookiesProvider>, rootElement );
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オブジェクトです。キーがクッキー名(
参考
以上