Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在React应用程序中使用window.localStorage吗?_Javascript_Node.js_Reactjs_Conventions - Fatal编程技术网

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

Javascript 我可以在React应用程序中使用window.localStorage吗?,javascript,node.js,reactjs,conventions,Javascript,Node.js,Reactjs,Conventions,我有一个React应用程序,允许用户从主视图/详细视图中选择他们最喜欢的项目 我希望用户能够打开网站,选择他们的“收藏夹”,而无需登录,重新加载页面,并在网站上保存他们的收藏夹。我尝试使用其他来源的PHP Cookie(阅读此处:)。我不想包含另一个npm包(主要是因为我只想知道我的依赖项背后到底发生了什么),我能想到的唯一解决方案就是使用 window.localStorage.setItem('key','value') 我说得对吗?还有其他的惯例吗?我该怎么办 请记住:我在Node.js服

我有一个React应用程序,允许用户从主视图/详细视图中选择他们最喜欢的项目

我希望用户能够打开网站,选择他们的“收藏夹”,而无需登录,重新加载页面,并在网站上保存他们的收藏夹。我尝试使用其他来源的PHP Cookie(阅读此处:)。我不想包含另一个
npm
包(主要是因为我只想知道我的依赖项背后到底发生了什么),我能想到的唯一解决方案就是使用

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

我说得对吗?还有其他的惯例吗?我该怎么办


请记住:我在Node.js服务器上运行此操作,因此我不能仅使用PHP请求设置cookies。

什么让您认为无法从获取请求设置cookies?看看您的另一个问题,您似乎只是忘记了包含凭据:

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

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

正如答案中所述


React
是一个用于构建ui组件的库。使用本地存储不是该目标的一部分,所以您可以使用它,这也是web规范的一部分(以及
sessionStorage
。无论如何,您可能希望将
localStorage
的访问分离到一个单独的文件中,该文件可以导入和测试-这意味着,您可以使用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安装存储--保存

示例store.js与npm的使用

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

React是一个用于构建ui组件的库。使用本地存储不是其中的一部分,因此您可以将其作为web规范的一部分来使用。无论如何,您可能希望将对本地存储的访问分离到一个单独的文件中,该文件可以导入和测试-级别为indirection@Gonzalo.-谢谢!这使它更容易理解ind,我请求您回答这个问题,即是否有其他方法将内容“保存”到浏览器中,以便它们“仍然存在”在页面刷新后,除了
window.localStorage
之外,不使用PHP。您可以使用window.localStorage或sessionstorage。还有其他更高级功能的实现,如web sql、indexedDb等。并非所有这些都是标准的,有些已经被弃用。尽管如此,所有这些都与p无关反应试图解决的问题。你应该可以使用localStorage@Gonzalo.-谢谢!我将再次回去尝试。当我问这个问题时,我与CORS有一些问题。我相信这是可能的,我只是不知道有什么最佳做法。获取请求是否在用户的本地浏览器上设置Cookies?我是否需要在每次将内容保存到PHP会话时检查会话id?这让我有点困惑。我甚至在生产服务器上设置
fetch
请求中的
content-type
时遇到问题,因为发出的选项请求花费了14秒才得到响应(TTFB).我发现这篇文章非常有用[它解释得很好,不需要安装额外的软件包。它对初学者理解React逻辑也非常有用。是的,您可以使用
localStorage
。在这里您也可以找到GitHub存储库