繁体   English   中英

重新加载页面后,本地存储不保留数据。 (反应打字稿)

[英]Localstorage not persisting data after page is reloaded. (React Typescript)

大家好,有人可以帮我解决这个问题吗?

我尝试将数据存储在 localStorage 中。 一切正常,直到我重新加载页面。 页面重新加载后,localStorage 为 null。

function getValues(){
    const storedValues = localStorage.getItem('SET')
    if(!storedValues) return 'nothing';
    return JSON.parse(storedValues)

}

const [fruit,setFruit] = useState(getValues)


useEffect(()=>{
    localStorage.setItem('SET', JSON.stringify(fruit))
},[fruit])

return (
<>
        FRUIT: {fruit}
        <button onClick={() =>setFruit('APPLE')}>APPLE</button>
        <button onClick={() =>setFruit('BANANA')}>BANANA</button>
</>

在我重新加载页面后,output 是:“没有”。 有谁知道如何解决这个问题?

好吧,我不太熟悉 React,但本地存储不只是擦除自身。 我认为您的代码中的问题来自“ getValues ”function。

    function getValues(){
        const storedValues = localStorage.getItem('SET')
        if(!storedValues) return 'nothing';
        return JSON.parse(storedValues)
    }

你有一个回报'什么'; 这可能就是它返回“无”的原因。 您可以使用以下方法轻松地将内容保存到本地存储中

function saveValue(name, value) {
    let v = JSON.stringify(value);
    if (localStorage.getItem(name)) {
        alert('Item already exists');
    } else {
        localStorage.setItem(name, v);
        console.log(`${name} added successfully`);
    }

function getValue(name) {
    let jsonValue = localStorage.getItem(name);
    let value = JSON.parse(jsonValue);
    return value;
}

并且您可以使用这两个函数从 localStorage 添加和获取任何您喜欢的值。 请注意,名称参数必须是字符串。 我希望这在某种程度上有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM