我正在尝试使用ES6模板文字语法来设置sessionStorage,其中部分键是活动选项卡ID。
我首先尝试将ES6模板文字放在方法中:
sessionStorage.getItem(`tabContent + ${this.props.activeTabKey}`)
但这不会编译。
我接下来在我的方法中创建了一个常量,然后在sessionStorage方法中引用它:
//attempt 1
const activeTabSessionStorageName = `tabContent + ${this.props.activeTabKey}`
(sessionStorage.getItem(`${activeTabSessionStorageName}`))
// attempt 2
const activeTabSessionStorageName = `tabContent + ${this.props.activeTabKey}`
sessionStorage.getItem(JSON.stringify(activeTabSessionStorageName))
//attempt 3
const activeTabSessionStorageName = `tabContent + ${this.props.activeTabKey}`
(sessionStorage.getItem(this.activeTabSessionStorageName))
我不确定什么是正确的语法,但都失败了,并提出了错误:
SyntaxError: Unexpected token u in JSON at position 0
我的目标是有一种方法来动态检查存储以查看它们是否存在密钥,然后再设置它。
除了高级别的理解之外,我对sessionStorage并不熟悉。我知道键和值必须是字符串。
我正在使用React和Redux
答案 0 :(得分:1)
Your error is likely a result of attempting to JSON.parse()
an undefined
value.
window.sessionStorage
可与JSON.stringify()
和JSON.parse()
结合使用,为会话提交数据。
请参阅下面的实际示例,包括Template Literals
以及未找到sessionStorage
Item
的情况下的安全转义。
// Hypothetical Object.
const hypotheticalObject = {
id: 'unique id',
data: 'data ..'
}
// Set Object to Session Storage.
window.sessionStorage.setItem(`CONTENT + ${hypotheticalObject.id}`, JSON.stringify(hypotheticalObject))
// Get Object.
const retrievedObject = window.sessionStorage.getItem(`CONTENT + ${hypotheticalObject.id}`) && JSON.parse(window.sessionStorage.getItem(`CONTENT + ${hypotheticalObject.id}`)) || false
// Log.
console.log(retrievedObject)