javascript - 无法将对象传递到 chrome 本地存储
问题描述
我正在使用 chrome 本地存储开发我的扩展程序,我想清除本地缓存,所以我使用了chrome.storage.local.clear()
. 现在我想向本地存储添加更多数据,chrome.storage.local.set()
但它在传递对象时返回未定义,即使它在清除之前确实有效。
这有效
chrome.storage.local.set({key: 'value'})
chrome.storage.local.get(['key'], result => {
console.log(result.key) // returns value
})
但这并不
const obj = {
key: 'value'
}
chrome.storage.local.set(obj)
chrome.storage.local.get(['obj'], result => {
console.log(result.obj) // returns undefined
})
我需要能够将对象传递给chrome.storage.local.set
解决方案
设置对象时,键名设置为key
only。但是您遇到了问题,因为您尝试访问obj
不存在的密钥名称。您可以像这样访问键值:
const obj = { key: 'value'}
chrome.storage.local.set(obj);
chrome.storage.local.get(['key'], result => {
console.log(result.key) // returns 'value'
})
欲了解更多信息:
用于将对象存储在chrome.storage
:
const name: {
first: 'Bob',
last: 'Smith'
}
chrome.storage.local.set({ key: name });
chrome.storage.local.get(['key'], result => {
console.log(result.key) // returns { first: 'Bob', last: 'Smith' }
console.log(result.key.first)
console.log(result.key.last)
})
您还可以解构result
对象以获取键,例如:
chrome.storage.local.get(['key'], ({key}) => {
console.log(key) // returns { first: 'Bob', last: 'Smith' }
console.log(key.first)
console.log(key.last)
})
获取存储的全部内容
如文档中所述:
要获取的单个键、要获取的键列表或指定默认值的字典(请参阅对象描述)。空列表或对象将返回空结果对象。传入 null 以获取存储的全部内容。
chrome.storage.local.get(null, function(items) {
var allKeys = Object.keys(items);
console.log(allKeys);
});
推荐阅读
- node.js - node.js 文件是否可以具有“.js”以外的扩展名来区分文本编辑器中的客户端和服务器代码?
- javascript - 在 R/Shiny 中使用 Simple Webaudiorecorder.js 并将录音发布到服务器
- powershell - 如何使用批处理文件执行 powershell 脚本?
- javascript - 为什么我的 NodeJS 服务器上的 ZIP 文件不可读?
- mysql - 选择日期并分配给变量后将日期插入回数据库
- excel - 编译错误:语法错误或运行时错误“1004”:应用程序定义或对象定义错误“Last Row and CountIF”
- java - 如何增加 jLabel 地址
- angular - 与 Angular PWA 应用程序中的延迟加载有关的强制更新激活可能导致的确切问题是什么?
- c++ - 如果函数在匿名命名空间中声明,是否可以在全局命名空间中定义?
- react-native - 我应该与 expo 一起使用 react native 还是应该弹出它