reactjs - Klarte ikke å utføre 'setItem' på 'Storage': Å sette verdien av 'state' overskred kvoten (localStorage.clear() vil ikke fungere)
I mitt React-prosjekt bruker jeg Redux hvor jeg lagrer den serialiserte tilstanden:
const saveState = (state: any) => {
try {
const serializedState = JSON.stringify(state);
localStorage.removeItem('state');
localStorage.clear();
localStorage.setItem('state', serializedState);
} catch (e) {
console.log(e);
let _lsTotal = 0, _xLen, _x; for (_x in localStorage) { if (!localStorage.hasOwnProperty(_x)) { continue; } _xLen = ((localStorage[_x].length + _x.length) * 2); _lsTotal += _xLen; console.log(_x.substr(0, 50) + " = " + (_xLen / 1024).toFixed(2) + " KB") }; console.log("Total = " + (_lsTotal / 1024).toFixed(2) + " KB");
}};
Siden jeg støtte på feilen 'Setting the value of 'state' exceeded the quota' prøvde jeg å tømme lokal lagring (se ovenfor). Likevel får jeg fortsatt denne feilen, og koden i catch-delen viser 0,00 KB av lagringen:
DOMException: Failed to execute 'setItem' on 'Storage': Setting the value of 'state' exceeded the quota.
at saveState (http://localhost:xxxx/static/js/main.chunk.js:16322:18)
at http://localhost:xxxx/static/js/main.chunk.js:16350:5
at invokeFunc (http://localhost:xxxx/static/js/1.chunk.js:276358:19)
at trailingEdge (http://localhost:xxxx/static/js/1.chunk.js:276403:14)
at timerExpired (http://localhost:xxxx/static/js/1.chunk.js:276391:14)
Store.ts:1967 Total = 0.00 KB
Hvordan unngå denne feilen?
Svar #1
Hvordan unngå denne feilen?
Ikke legg store objekter i state. Ifølge kommentarene ser det ut til at objektet ditt var 6006565 langt. Det er mange biter!