从 localStorage 获取项目并导出它们
Get items from localStorage and export them
我有一个函数,它接受存储在状态中的字段,如果它们存在,returns 它们。
export const hasNameAndTokenSelector = (state) => {
const { fields } = baseInputsSelector(state);
const hasName = !isNil(prop('name')(fields));
const hasToken = !isNil(prop('token')(fields));
return hasName && hasToken;
};
但现在我需要使用相同的函数来获取存储在 localStorage 中的项目。
我正在尝试执行以下操作:
export const hasNameAndTokenSelector = (state) => {
if (localStorage.getItem('inputs') !== null) {
const localInputs = JSON.parse(localStorage.getItem('inputs'));
const hasToken = localInputs[0].token;
const hasName = localInputs[0].name;
return hasName && hasToken;
}
};
localInputs 的格式为:
{
"name":"John Doe",
"token":"string123-9882",
}
但它不起作用,我相信这是因为我需要状态参数并且 return 在 if 中,但我不知道正确的方法。
我应该如何获取这些存储项和return它们?我需要在另一个文件中使用hasNameAndTokenSelector。
谢谢!!
如果你localInputs
格式是一个对象
{
"name":"John Doe",
"token":"string123-9882",
}
你应该从这个对象中取出一个 属性,而不是从 localInputs[0]
:
const hasToken = localInputs.token;
const hasName = localInputs.name;
从上面的评论...
"... code review ... since the function's name is hasNameAndTokenSelector
it is expected to always return a boolean value, neither once [the undefined
default], nor either of the string values localInputs.token
/ localInputs.name
."
因此,为了解决OP原来的问题...
"How should I get these stored items and return them?"
...OP 提供的方法最好重构为两个函数,一个函数完成 getNameAndToken
部分,另一个函数涵盖已经存在的 hasNameAndToken
部分 ...
// `storedInputs` structure ...
// {
// "name":"John Doe",
// "token":"string123-9882",
// }
export const getNameAndToken = () => {
const storedInputs = localStorage.getItem('inputs');
return (storedInputs !== null)
&& JSON.parse(storedInputs)
|| {};
};
export const hasNameAndToken = () => {
const { name, token } = getNameAndToken();
return !!(name && token);
};
// usage in other modules
import { getNameAndToken/*, hasNameAndToken*/ } from '/'
const { name, token } = getNameAndToken();
我有一个函数,它接受存储在状态中的字段,如果它们存在,returns 它们。
export const hasNameAndTokenSelector = (state) => {
const { fields } = baseInputsSelector(state);
const hasName = !isNil(prop('name')(fields));
const hasToken = !isNil(prop('token')(fields));
return hasName && hasToken;
};
但现在我需要使用相同的函数来获取存储在 localStorage 中的项目。 我正在尝试执行以下操作:
export const hasNameAndTokenSelector = (state) => {
if (localStorage.getItem('inputs') !== null) {
const localInputs = JSON.parse(localStorage.getItem('inputs'));
const hasToken = localInputs[0].token;
const hasName = localInputs[0].name;
return hasName && hasToken;
}
};
localInputs 的格式为:
{
"name":"John Doe",
"token":"string123-9882",
}
但它不起作用,我相信这是因为我需要状态参数并且 return 在 if 中,但我不知道正确的方法。
我应该如何获取这些存储项和return它们?我需要在另一个文件中使用hasNameAndTokenSelector。
谢谢!!
如果你localInputs
格式是一个对象
{
"name":"John Doe",
"token":"string123-9882",
}
你应该从这个对象中取出一个 属性,而不是从 localInputs[0]
:
const hasToken = localInputs.token;
const hasName = localInputs.name;
从上面的评论...
"... code review ... since the function's name is
hasNameAndTokenSelector
it is expected to always return a boolean value, neither once [theundefined
default], nor either of the string valueslocalInputs.token
/localInputs.name
."
因此,为了解决OP原来的问题...
"How should I get these stored items and return them?"
...OP 提供的方法最好重构为两个函数,一个函数完成 getNameAndToken
部分,另一个函数涵盖已经存在的 hasNameAndToken
部分 ...
// `storedInputs` structure ...
// {
// "name":"John Doe",
// "token":"string123-9882",
// }
export const getNameAndToken = () => {
const storedInputs = localStorage.getItem('inputs');
return (storedInputs !== null)
&& JSON.parse(storedInputs)
|| {};
};
export const hasNameAndToken = () => {
const { name, token } = getNameAndToken();
return !!(name && token);
};
// usage in other modules
import { getNameAndToken/*, hasNameAndToken*/ } from '/'
const { name, token } = getNameAndToken();