1

我正在尝试使用 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

4

1 回答 1

1

您的错误可能是由于尝试获取JSON.parse()undefined而导致的。

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)
于 2018-02-28T02:20:25.457 回答