일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 잔
- 컴퓨터공학 #c #c언어 #문자열입력
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- HTML #CSS
- Today
- Total
영벨롭 개발 일지
[React]리액트 쿠키 react-cookie 다루기 본문
[ 쿠키란? ]
쿠키는 사용자가 웹 페이지 방문시 클라이언트 로컬에 저장되는 키와 값이 들어있는 데이터 파일입니다. Key와 Value 쌍으로 구성되며 String 형태로 이루어져 있습니다.
최대 300개까지 저장 가능하며 하나의 도메인당 20개의 값만 가질 수 있습니다. 이때 하나의 쿠키값은 4KB까지 가능합니다.
웹 서버가 웹 브라우저에게 보내어 저장했다가 서버의 부가적인 요청이 있을 때 다시 서버로 보내주는 문자열 정보라고 할 수 있습니다.
우리는 이 쿠키를 통해 브라우저를 종료했다가 다시 접속하더라도 로그인 상태를 유지할 수 있게 되는 것입니다.
★ 쿠키의 장점
1. 세션관리: 로그인, 접속 시간 등 서버가 알아야 할 정보를 저장할 수 있다.
2. 개인화: 사용자마다 다르게 적절한 페이지를 보여줄 수 있다.
3. 트래킹: 사용자의 행동과 패턴을 분석하여 기록할 때 사용된다.
★ 쿠키의 단점
1. 사생활 침해 가능성: 방문한 웹 사이트에 대한 정보 및 개인정보가 기록되어 있다.
2. 최약한 보안: 사용자에게 저장되기 때문에 임의로 고치거나 삭제가 가능하다
3. 트래픽: 매번 헤더에 쿠키에 대한 정보를 추가해서 보내기 때문에 상당한 트래픽을 발생시킨다.
[ react-cookie 사용법 ]
- 설치
$ npm i react-cookie
- CookiesProvider
// index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter } from 'react-router-dom';
import { CookiesProvider } from 'react-cookie';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<CookiesProvider>
<BrowserRouter>
<App />
</BrowserRouter>
</CookiesProvider>
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
- 기본 사용법
쿠키와 관련된 함수들을 모아 cookie.js 파일에 저장하겠습니다.
name은 쿠키 Key 문자열, value는 쿠키 Value 문자열 또는 객체를 의미합니다.
options는 객체 형태이며 다음 값들이 올 수 있습니다.
options | 설명 |
path | string, 쿠키를 접근할 수 있는 경로 지정 |
expires | Date, 쿠키 만료 날짜 지정 |
maxAge | number, 초 단위로 쿠키의 상대적인 max age 지정 |
secure | boolean, HTTPS로만 접근 가능하게 할 것인지 지정 |
// cookie.js
import { Cookies } from "react-cookie";
const cookies = new Cookies();
export const setCookie = (name, value, options) => {
return cookies.set(name, value, {...options})
}
export const getCookie = (name) => {
return cookies.get(name)
}
export const removeCookie = (name) => {
return cookies.remove(name);
}
- 예제
// CookieTest.jsx
import React from 'react';
import {
setCookie, getCookie, removeCookie
} from './config/cookie';
const CookieTest = () => {
const onSet = () => {
setCookie('cookieKey', 'cookieValue', {
path: '/',
secure: true,
maxAge: 3000
})
}
const onGet = () => {
const getVal = getCookie('cookieKey');
console.log(getVal);
}
const onRemove = () => {
removeCookie('cookieKey')
}
return (
<>
<button onClick={onSet} type="button">set cookie</button>
<button onClick={onGet} type="button">get cookie</button>
<button onClick={onRemove} type="button">remove cookie</button>
</>
);
};
export default CookieTest;
'Front-end > React' 카테고리의 다른 글
[React]React의 Virtual DOM (0) | 2024.04.24 |
---|---|
[React] React란? - React를 사용하는 이유 (0) | 2024.04.21 |
[React]리액트 함수형 컴포넌트와 클래스형 컴포넌트 & Props와 State (0) | 2022.07.08 |
[React]리액트 fetch 와 axios - 영화 정보 가져오기 (0) | 2022.06.02 |
[React]리액트 useEffect 사용법 (0) | 2022.05.29 |