在本地存储上保存多个对象? Javascript
Save multiple objects on Local Storage? Javascript
我有 2 个房间 {roomId: room1, roomId: room2}
,我想在 localStorage 上为每个房间保存对象。
对象看起来像
let notifiedRoom = {
roomId: roomId,
dismissed: true
};
当用户关闭相应房间的通知时,notifiedRoom 对象保存在 localStorage 中。
import React from 'react';
import { toast } from 'react-toastify';
const RoomNotification = (props) => {
const { roomId, message } = props;
const setLocalStorage = (roomId) => {
let notifiedRoom = {
roomId: roomId,
dismissed: true
};
localStorage.setItem('notifiedRoom', JSON.stringify(notifiedRoom));
};
const notify = () => {
toast(<div><p>{roomId}</p><p>{message}</p></div>,
{
toastId: roomId,
position: "top-center",
draggable: true,
onClose:() => setLocalStorage(roomId)
});
};
}
我遇到的问题是,这一次只能为一个房间保存一个对象。所以如果你关闭 room1 Notification 然后在 localStorage
roomId: room01, dismissed: true
,如果我关闭 room2 通知,room1 的先前 localStorage 对象将被 room2 覆盖。
我只需要在 roomId 匹配时覆盖它。否则只需为 locatStorage 上的每个不同 roomId 创建新对象。
非常感谢
很简单,您只需为新的本地存储命名并为其设置数组即可
localStorage.setItem('1', JSON.stringify(new_array));
localStorage.setItem('2', JSON.stringify(new_array));
同理 - 因此它将为每个通知的房间创建新的存储空间
当您需要检索存储时 - 可以按名称检索
var room1= JSON.parse(localStorage.getItem('1'));
var room2= JSON.parse(localStorage.getItem('2'));
希望这就是您要找的
除了这样做 {roomId: room1, roomId: room2}
你可以简单地这样做:
{room1: room1Data, room2: room2Data}
因此,如果您想更新任何一个房间,例如 room1。
const setLocalStorage = (roomId) => {
const initialUpdateData = JSON.parse(localStorage.getItem('notifiedRoom')) ||{room1:null,room2:null}
let updatedRoom = {
...initialUpdateData,
[updatedRoom]:{
roomId: roomId,
dismissed: true
}
};
localStorage.setItem('notifiedRoom', JSON.stringify(updatedRoom));
};
注意:updatedRoom
将是您的房间 1 或房间 2
您需要在一个对象中使用唯一键,因此:
{room1: {dismissed: true}, room2: {dismissed: true}}
const setLocalStorage = (roomId) => {
const notifiedRoom = JSON.parse(localStorage.getItem('notifiedRoom'))
notifiedRoom[roomId] = {dismissed: true}
localStorage.setItem('notifiedRoom', JSON.stringify({...notifiedRoom}));
};
我有 2 个房间 {roomId: room1, roomId: room2}
,我想在 localStorage 上为每个房间保存对象。
对象看起来像
let notifiedRoom = {
roomId: roomId,
dismissed: true
};
当用户关闭相应房间的通知时,notifiedRoom 对象保存在 localStorage 中。
import React from 'react';
import { toast } from 'react-toastify';
const RoomNotification = (props) => {
const { roomId, message } = props;
const setLocalStorage = (roomId) => {
let notifiedRoom = {
roomId: roomId,
dismissed: true
};
localStorage.setItem('notifiedRoom', JSON.stringify(notifiedRoom));
};
const notify = () => {
toast(<div><p>{roomId}</p><p>{message}</p></div>,
{
toastId: roomId,
position: "top-center",
draggable: true,
onClose:() => setLocalStorage(roomId)
});
};
}
我遇到的问题是,这一次只能为一个房间保存一个对象。所以如果你关闭 room1 Notification 然后在 localStorage
roomId: room01, dismissed: true
,如果我关闭 room2 通知,room1 的先前 localStorage 对象将被 room2 覆盖。
我只需要在 roomId 匹配时覆盖它。否则只需为 locatStorage 上的每个不同 roomId 创建新对象。
非常感谢
很简单,您只需为新的本地存储命名并为其设置数组即可
localStorage.setItem('1', JSON.stringify(new_array));
localStorage.setItem('2', JSON.stringify(new_array));
同理 - 因此它将为每个通知的房间创建新的存储空间
当您需要检索存储时 - 可以按名称检索
var room1= JSON.parse(localStorage.getItem('1'));
var room2= JSON.parse(localStorage.getItem('2'));
希望这就是您要找的
除了这样做 {roomId: room1, roomId: room2}
你可以简单地这样做:
{room1: room1Data, room2: room2Data}
因此,如果您想更新任何一个房间,例如 room1。
const setLocalStorage = (roomId) => {
const initialUpdateData = JSON.parse(localStorage.getItem('notifiedRoom')) ||{room1:null,room2:null}
let updatedRoom = {
...initialUpdateData,
[updatedRoom]:{
roomId: roomId,
dismissed: true
}
};
localStorage.setItem('notifiedRoom', JSON.stringify(updatedRoom));
};
注意:updatedRoom
将是您的房间 1 或房间 2
您需要在一个对象中使用唯一键,因此:
{room1: {dismissed: true}, room2: {dismissed: true}}
const setLocalStorage = (roomId) => {
const notifiedRoom = JSON.parse(localStorage.getItem('notifiedRoom'))
notifiedRoom[roomId] = {dismissed: true}
localStorage.setItem('notifiedRoom', JSON.stringify({...notifiedRoom}));
};