我可以在我的React应用程序中使用window.localStorage吗?

时间:2018-05-04 23:57:13

标签: javascript node.js reactjs conventions

我有一个React应用程序,允许用户选择他们的"收藏夹"来自主/详细视图的项目......

我希望用户能够打开网站,选择他们的&#34;收藏夹&#34; 没有必须登录,重新加载页面,并在网站上保存他们的收藏夹。&#34;我尝试过使用其他来源的PHP Cookie(请在此处阅读:You can't set Cookies from a fetch request)。我不想包含另一个npm软件包(主要是因为我只想知道我的依赖项背后真正发生了什么),而我能想出的唯一解决方案是使用< / p>

window.localStorage.setItem('key', 'value');

我是对的吗?这有其他约定吗? 应该我做什么?

请注意:我在Node.js服务器上运行,因此我无法通过PHP请求设置Cookie。

3 个答案:

答案 0 :(得分:1)

是什么让您认为无法通过获取请求设置Cookie?看看你的另一个问题,看起来你只是忘了包含凭证:

fetch('/whatever', {
    method: "GET",
    credentials: 'include'
})

但是,是的,您可以使用window.localStoragewindow.sessionStorage在本地保存内容。

答案 1 :(得分:1)

正如答案所述

React是一个用于构建ui组件的库。使用本地存储不是该目标的一部分,因此您可以使用它,这是Web中规范的一部分(以及sessionStorage。无论如何,您可能想要分离localStorage的访问权限在一个单独的文件中,可以导入和测试 - 这意味着一个间接级别

答案 2 :(得分:1)

您可以使用 store.js 为跨浏览器本地存储公开一个简单的API

// Store current user
store.set('user', { name:'Marcus' })

// Get current user
store.get('user')

// Remove current user
store.remove('user')

// Clear all keys
store.clearAll()

// Loop over all stored values
store.each(function(value, key) {
    console.log(key, '==', value)
})
  • 安装:
  

npm install store --save

使用npm

的store.js示例
var store = require('store')
store.set('user', { name:'Marcus' })
store.get('user').name == 'Marcus'