本地存储上的JSON.parse失败时React映射出错



我有一个react应用程序,它使用本地存储来使用cookie来维护其状态,但当存在具有错误值的cookie时,代码错误会导致整个应用程序崩溃。我不确定到底是什么cookie出了问题,但某些cookie似乎会导致`JSON.parse(localStorage[key](失败。

const getLocalStorage = () => {
const storage = R.compose(
R.fromPairs,
R.map(([key]) => [key, JSON.parse(localStorage[key])]),
R.toPairs, // [[key, value], [key, value]]
)(localStorage);
return storage;
};

我只想添加一些错误处理,这样就可以忽略无法解析的cookie,但我不知道如何在这种语法中做到这一点。如何修复代码,以便在JSON.parse失败时不会中断?

所以这里有两个选项,第一个是在你这样做地图之前过滤掉任何在解析时会返回错误的cookie:

const getLocalStorage = () => {
const storage = R.compose(
R.fromPairs,
R.filter([key] => {
try{
JSON.parse(localStorage[key]);
return true;
}
catch(error){
console.log(error);
return false;           
}
}).map(([key]) => [key, JSON.parse(localStorage[key])]),
R.toPairs, // [[key, value], [key, value]]
)(localStorage);
return storage;
};

或者你可以尝试使用这样的Array.reduce((:

const getLocalStorage = () => {
const storage = R.compose(
R.fromPairs,
R.reduce((acc, curr) => 
{
try{
acc.push[[key, JSON.parse(localStorage[key])]];
}
catch(error){
console.log(error);         
}
return acc;
}),
R.toPairs, // [[key, value], [key, value]]
)(localStorage);
return storage;
};

最新更新