我有一个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;
};