localStorage用法

一、localStorage API使用

注意,localStorage 只能存储字符串

1.1 存储数据

例如,对象存储时,可以使用JSON.stringify 转成字符串;

// 假设你有一个对象
const myObject = {
  name: 'Alice',
  age: 25,
};

// 使用 JSON.stringify 将对象转换为字符串
const serializedObject = JSON.stringify(myObject);

// 存储到 localStorage
localStorage.setItem('myKey', serializedObject);

1.2 读取数据

读取时,再用JSON.parse 方法将字符串转换回对象。

// 使用 localStorage.getItem 获取存储的字符串
const storedObjectString = localStorage.getItem('myKey');

// 如果存在数据,使用 JSON.parse 将字符串转换回对象
const myObject = storedObjectString ? JSON.parse(storedObjectString) : null;

// 使用对象
console.log(myObject);

1.3 react中的使用

完整示例
在 React 组件中,你可以在需要的时候从 localStorage 读取数据,并在组件更新时将数据写入:

import React, { useState, useEffect } from 'react';

function MyComponent() {
  const [myObject, setMyObject] = useState(null);

  useEffect(() => {
    // 从 localStorage 读取对象
    const storedObjectString = localStorage.getItem('myKey');
    setMyObject(storedObjectString ? JSON.parse(storedObjectString) : null);
  }, []); // 空依赖数组意味着这个 effect 只在组件挂载时运行一次

  const saveObjectToLocalStorage = () => {
    const myObject = {
      name: 'Alice',
      age: 25,
    };
    localStorage.setItem('myKey', JSON.stringify(myObject));
    setMyObject(myObject); // 更新状态以反映最新存储的对象
  };

  return (
    <div>
      {myObject ? (
        <div>
          <p>Name: {myObject.name}</p>
          <p>Age: {myObject.age}</p>
        </div>
      ) : (
        <p>No object found in localStorage</p>
      )}
      <button onClick={saveObjectToLocalStorage}>Save Object</button>
    </div>
  );
}

export default MyComponent;

1.4 其他方法介绍

在这里插入图片描述参考文章

二、ahook

官方文档介绍
使用这个钩子之后,就和state用法很类似了

import React from 'react';
import { useLocalStorageState } from 'ahooks';

export default function () {
  const [message, setMessage] = useLocalStorageState<string | undefined>(
    'use-local-storage-state-demo1',
    {
      defaultValue: 'Hello~',
    },
  );

  return (
    <>
      <input
        value={message || ''}
        placeholder="Please enter some words..."
        onChange={(e) => setMessage(e.target.value)}
      />
      <button style={{ margin: '0 8px' }} type="button" onClick={() => setMessage('Hello~')}>
        Reset
      </button>
      <button type="button" onClick={() => setMessage(undefined)}>
        Clear
      </button>
    </>
  );
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值