创建扩展时使用 chrome.storage.local.set() 更新 chrome 本地存储中的值时出现意外结果

问题描述 投票:0回答:1

最初存储在chrome浏览器本地存储中的数据是

 `{
    storedGroupsData: {
        grp1: [
            {},{}
        ]
    }
}`

当我尝试添加另一个组时说“grp2”我想要这个

{
storedGroupsData: {
    grp1: [
        {},{}
    ],
    grp2:[
        {},{}
    ]
}

}

但我明白了

{
storedGroupsData: {
    grp2: [
        {},{}
    ],
    storedGroupsData:{
       grp2: [
        {},{}
       ]
    }

}

}

代码是

import getTabData from "./getTabData.js";

 const createGroup = async (selectedTabs, groupName) => {
const groupData = [];
let storedGroupsData;

try {

检索本地存储中存储的数据

  storedGroupsData = await chrome.storage.local.get('storedGroupsData');
    storedGroupsData = storedGroupsData || { }
    console.log(storedGroupsData);

} catch (err) {
    console.error(err);
}

将 tabInfo 压入 groupData 数组

for (const tabId of selectedTabs) {
    const tabInfo = await getTabData(tabId, groupName);
    groupData.push(tabInfo);
}

创建新群组

const newGroup = {
    [groupName]: groupData
};

使用chrome扩展api提供的chrome.storage.local.se()函数更新storedGroupsData并将其保存在本地存储中

try {
         const modifiedStoredGroupsData = { ...storedGroupsData, ...newGroup };
         console.log(modifiedStoredGroupsData);
         await chrome.storage.local.set({'storedGroupsData' : modifiedStoredGroupsData});
         storedGroupsData[groupName] = groupData;
         await chrome.storage.local.set({storedGroupsData})
    } catch (err) {
    console.error(err);
  }
  };

 
 export default createGroup;
google-chrome-extension
1个回答
0
投票

get
的结果不是键的值,而是一个对象
{[key]: value}
,因此要获取值,您需要读取结果的
[key]

let data = (await chrome.storage.local.get('storedGroupsData')).storedGroupsData || {};

同时删除第二个

set
调用,因为它是不必要的重复。

© www.soinside.com 2019 - 2024. All rights reserved.