【问题标题】:How to get to Web API's sessionStorage object in React如何在 React 中访问 Web API 的 sessionStorage 对象
【发布时间】:2017-10-29 06:49:52
【问题描述】:

我不明白,我看到所有这些人都在谈论 localStorage 或 sessionStorage 但在我的 React 项目中我没有定义。他们如何从真正的 Web API 中获取该对象?

例子:

persistent-state-reactjs

redux-sessionstorage

react-redux-jwt-auth-example

这些节目中的每一个都调用 localStorage 或 sessionStorage 但如何?我没有看到他们使用任何库来实现这一点。我唯一能想到的是他们正在使用幻影或卡斯珀之类的东西?我只在第三个 url 的 package.json 中看到幻影。即便如此,我看不出他是如何插入 Phantom 的,如果不是,他如何拥有 localStorage 的实例?

【问题讨论】:

  • 你的应用服务器渲染了吗?如果是这样,那么您将不会获得 localStorage 和 sessionStorage

标签: reactjs asp.net-web-api redux


【解决方案1】:

localStoragesessionStorage 是来自 Web API 的内置对象,因此您不需要任何库来使用它们如果您在 前端使用它们。我的猜测是,localStoragesessionStorage 不可用,因为您的 react 应用程序是服务器渲染的。您可以通过在应用程序的某处运行以下代码来测试它们。如果它们不存在并且您仍然希望您的应用程序在服务器上呈现,您可以使用像这样的库:https://www.npmjs.com/package/web-storage

try {
  // localstorage or sessionstorage init
  // ...
} catch (e) {
  // they are not defined, use a library
  console.log(e); // look at error
  
  // if localStorage is not defined, use a library
  window.localStorage = require('web-storage')().localStorage;
}

希望这会有所帮助。

【讨论】:

  • 当您说服务器渲染时,这不是同构应用程序。我只是在使用 react-redux。
  • 我想我可能错过了什么。代码代码let token = localStorage.getItem('token') 解析为什么?它是空的还是未定义的?当你console.log(localStorage) 时会发生什么?
猜你喜欢
  • 2014-02-27
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 2021-09-01
相关资源
最近更新 更多