JSFiddle - React, Tailwind, and code Playground
Proxy: cookie object
by Csaba Hellinger
JavaScript
function cookieObject() {
// load current cookies
const cookies = {};
document.cookie.split(';').forEach(item => {
const i = item.indexOf('='),
key = item.substr(0, i).trim(),
value = item.substr(i + 1);
cookies[key] = value;
});
// proxy to persist props to cookies
const handler = {
set (obj, prop, value) {
document.cookie = `${prop}=${value}`;
Reflect.set(obj, prop, value);
},
deleteProperty (obj, prop) {
document.cookie = `${prop}=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
return Reflect.deleteProperty(obj, prop);
}
};
return new Proxy(cookies, handler);
}
// simulate previously saved/missing cookies
document.cookie='A=1';
document.cookie='BCD=234';
document.cookie='C=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
// try the cookies proxy
const myCookies = cookieObject();
console.clear();
console.log('loaded:', myCookies);
myCookies.C = 'hello';
console.log(document.cookie);
delete myCookies.BCD;
console.log(document.cookie);