首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React + Redux + Rails在切换页面后丢失存储

React + Redux + Rails在切换页面后丢失存储是因为React是单页面应用(SPA),切换页面时不会重新加载整个页面,而是通过React Router进行组件的切换,从而实现页面间的切换。

在React + Redux应用中,数据的存储主要通过Redux来管理。Redux是一个JavaScript的状态管理库,它将应用的状态保存在一个单一的存储库中,并通过派发操作来改变状态。在React应用中,Redux与React组件相结合,使得组件能够访问和更新Redux存储中的数据。

但是,当切换页面时,Redux存储的数据会丢失,因为每次切换页面,React组件会重新加载,Redux存储也会重新初始化。这意味着之前在一个页面上保存的数据将无法在切换到另一个页面后继续使用。

为了解决这个问题,可以考虑以下几种方法:

  1. 使用持久化存储:将Redux存储中的数据保存到本地存储(如localStorage或sessionStorage)中。这样,当切换页面时,可以从本地存储中读取数据,然后初始化Redux存储。但是需要注意的是,本地存储的数据大小是有限的,过多的数据可能会导致性能问题。
  2. 使用后端存储:将Redux存储中的数据保存到后端数据库中。这样,当切换页面时,可以通过异步请求从后端获取数据,然后初始化Redux存储。这种方法需要对后端进行相应的开发和配置,并且需要考虑数据同步的问题。
  3. 使用客户端路由和缓存策略:通过使用React Router的缓存策略,可以将之前访问过的页面缓存下来,在切换到该页面时直接从缓存中获取数据,而不是重新加载页面和初始化Redux存储。这样可以提高页面切换的性能和用户体验。

总结起来,React + Redux + Rails在切换页面后丢失存储是因为单页面应用的特性。为了解决这个问题,可以使用持久化存储、后端存储或者客户端路由和缓存策略来保留并恢复之前页面中的数据。具体的解决方案需要根据实际情况和需求来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rails 从入门到完全放弃

后面深入研究发现,这类云存储的方法还是用得比较多,也比较便捷,但对于新手还是有一定门槛,所以做完之后顺带写了相应的教程造福社会。...不过现在前后端分离,前端使用ReactRedux操作DOM比以往轻松多了。事实上WiceGrid的筛选方式对于用户并不友好。...开发过程中最拖慢开发进度的不是需求变动,也不是技术点,使用了assets pipeline的话,调试页面的时候资源加载总是很慢。...好像也没有看到有多少大型项目用Meteor + React + Redux 技术栈的。用上React前端代码思路和结构变得清晰多了。也可以使用诸多的React组件了。...当Rails老了,你还有Phoenix 结束语 AD:你错过了房地产,错过了网购,错过了炒股,别再错过Elixir Phoenix React Redux

2.2K20
  • redux 使用 redux-persist 进行数据持久化

    0 1 redux-persist的介绍 React项目中,我们会使用redux 来进行状态管理。redux和其它状态管理技术一样,刷新页面,数据就会恢复成初始状态。 如何让数据实现持久化呢?...今天给大家推荐redux的一个插件redux-persist。redux-persist会将redux的store中的数据自动缓存到浏览器的 localStorage 中,不再需要单独去存储了。...中,将PersistGate标签嵌套在redux内层 import React from 'react'; import ReactDOM from 'react-dom'; import {Provider...} from 'react-redux' import App from '....localStorage的值 你将发现数据已经存储到了localStorage中,刷新网页,redux中的数据也不会丢失 以上,就完成了使用redux-persist实现React持久化本地数据存储的简单应用

    3.6K20

    H5 页面列表缓存方案

    但刚才说的都是 App,原生 App 中,页面是一层层的 View,盖 LastPage 上,天然就能够保存上一个页面的状态,而 H5 不同,从详情返回到列表,状态会被清除掉,重新走一遍生命周期,...思考 状态丢失的原因 通常在页面开发中,我们是通过路由去管理不同的页面,常用的路由库也有很多,譬如:React-Router (https://react-guide.github.io/react-router-cn...当我们切换路由时,没有被匹配到的 Component 也会被整体替换掉,原有的状态也丢失了。...),但是这可能会有问题,例如切换组件的时候无法使用动画,或者使用 Redux、Mobx 这样的数据流管理工具,还有开发者通过 React.createPortal API 实现了 React 版本的 React...第二种解决方案就是手动保存状态,即在页面卸载时手动将页面的状态收集存储起来,页面挂载的时候进行数据恢复,个人采用的就是简单粗暴的后者,实现上比较简单。

    1.5K20

    react全家桶包括哪些_react 自定义组件

    1.1 创建项目并启动 全局安装 第一步,全局安装:npm i -g create-react-app 第二步,切换到想创项目的目录,使用命令:create-react-app hello-react...的三大核心概念 4.2.1 store 单一数据源 整个应用程序的state被存储一颗object tree中,并且这个object tree只存储一个 store 中 Redux并没有强制让我们不能创建多个...SSR 5.1 SSR和同构 5.1.1 SSR SSR(Server Side Rendering,服务端渲染),指的是页面服务器端已经生成了完成的HTML页面结构,不需要浏览器解析 对应的是CSR...PHP、JSP等技术来开发网页 不过我们可以借助于Node来帮助我们执行JavaScript代码,提前完成页面的渲染 5.1.2 同构 一套代码既可以服务端运行又可以客户端运行,这就是同构应用 同构是一种...SSR的形态,是现代SSR的一种表现形式 当用户发出请求时,先在服务器通过SSR渲染出首页的内容 但是对应的代码同样可以客户端被执行 执行的目的包括事件绑定等以及其他页面切换时也可以客户端被渲染 5.2

    5.8K20

    Luna:你想要的 React Native 调试工具

    背景 React Native(以下简称 RN)目前 Shopee 前端团队得到大量应用。...[ ] 3)Shopee 版块 Shopee 版块提供了一些 Shopee App 相关的功能,比如便捷的翻译文案切换、Cookies 查看、DataStore 存储查看与删除,还有用户 ID / 名字与设备系统信息...4)Redux 版块 Redux 版块展示了 Store(共享数据存储仓库)树,方便用户查看整个 Store 的状态。 3....首先,Luna 将初始化与页面注册解耦,将 Luna.init 前置到了应用初始化时。这使得数据的收集与页面的注册分离,保证了页面切换不会导致数据的丢失。...使用者可以很方便地查找到当前 Redux存储值。 Shopee Plugin 是依托于 Shopee React Native SDK 的一个插件,专门针对于 Shopee App 内的项目开发。

    2K20

    React 中后台系统多页签实现

    中后台管理类系统中,多页签的需求非常普遍,用户常常需要在多个页签内跳转,比如填写表单时去查询某个列表获取一些字段信息再回到表单页面填写。...这样的需求 Vue 中使用 keep-alive 即可实现,但是 React 中,React Router 切换路由就会卸载组件,而本身并没有提供类似 keep-alive 的功能,所以实现多页签的功能就会变得格外困难...二、需求背景 当时的多页签需求还是比较明确的,因为我们团队 2013 年使用 Sea.js + JQuery 的管类系统都早已实现了,而新的使用 React 技术栈构建的新 UI 却丢失了这个功能...看看社区其他人的理性分析: 社区用户反馈 三、方案选型 经过一番调研之后,基本的思路大概有三种: 使用 Redux,数据往 store 里面怼,实现页面数据的”缓存“。...我们多页签的迭代中增加了相同组件多开功能,这个场景比较常见,比如列表页点击链接跳转到表单页,可以同时打开多个表单,这样不使用 Redux 是没有什么问题,但是一旦数据存在 Redux 中,多开组件就会有问题

    3.4K20

    「首席架构师推荐」React生态系统大集合

    视图 - 服务器上呈现咖啡React React页面中间件 ngReact - Angular中的React组件 ReactLaravel coffee-react-transform - 为Coffeescript...React + Flux由Rails API支持:第1部分 Reails + Flux由Rails API支持:第2部分 Reails + Flux由Rails API支持:第3部分 Flux解决方案通过实例比较...- 用于测试redux异步动作创建器和中间件的模拟存储 redux-immutable - 创建一个与Immutable.js状态一起使用的Redux combineReducers的等效函数 redux-react-i18n...- 一个简单的redux中间件,用于使用JSON Schema验证redux状态值和对象类型 redux-persist - 坚持并补充redux商店 Redux教程 ES6中使用ReactRedux...Redux CRUD本地存储中具有持久状态 React Slack克隆 - 使用React和Chatkit构建的综合Slack克隆 React颜色漂移 - 与React的生成艺术 overreacted.io

    12.4K30

    【实战】1096- React 中后台系统多页签实现

    中后台管理类系统中,多页签的需求非常普遍,用户常常需要在多个页签内跳转,比如填写表单时去查询某个列表获取一些字段信息再回到表单页面填写。...这样的需求 Vue 中使用 keep-alive 即可实现,但是 React 中,React Router 切换路由就会卸载组件,而本身并没有提供类似 keep-alive 的功能,所以实现多页签的功能就会变得格外困难...二、需求背景 当时的多页签需求还是比较明确的,因为我们团队 2013 年使用 Sea.js + JQuery 的管类系统都早已实现了,而新的使用 React 技术栈构建的新 UI 却丢失了这个功能...看看社区其他人的理性分析: 社区用户反馈 三、方案选型 经过一番调研之后,基本的思路大概有三种: 使用 Redux,数据往 store 里面怼,实现页面数据的”缓存“。...我们多页签的迭代中增加了相同组件多开功能,这个场景比较常见,比如列表页点击链接跳转到表单页,可以同时打开多个表单,这样不使用 Redux 是没有什么问题,但是一旦数据存在 Redux 中,多开组件就会有问题

    2.5K10

    必须要会的 50 个React 面试题(下)

    使用 Redux 开发的应用易于测试,可以不同环境中运行,并显示一致的行为。 37. Redux遵循的三个原则是什么? 单一事实来源:整个应用的状态存储单个 store 中的对象/状态树里。...Redux 使用 “Store” 将程序的整个状态存储同一个地方。因此所有组件的状态都存储 Store 中,并且它们从 Store 本身接收更新。...找到第一个匹配项,它将渲染指定的路径。从而绕过其它路线。 48. 为什么需要 React 中的路由?...主题 常规路由 React 路由 参与的页面 每个视图对应一个新文件 只涉及单个HTML页面 URL 更改 HTTP 请求被发送到服务器并且接收相应的 HTML 页面 仅更改历史记录属性 体验 用户实际每个视图的不同页面切换...用户认为自己正在不同的页面切换 希望这套 React 面试题和答案能帮你准备面试。

    3.5K21

    React组件设计实践总结02 - 组件的组织

    React 中, 组件就是模块. 单一职责要求将组件限制一个’合适’的粒度. 这个粒度是比较主观的概念, 换句话说’单一’是一个相对的概念....React Hooks出现, 容器组件可以被 Hooks 形式取代, Hooks 可以和视图层更自然的分离, 为视图层提供纯粹的数据来源....Redux 就是一个典型的解决方案, Redux 的世界里可以认为一个复杂的组件树就是一颗状态树的映射, 只要状态树(需要依靠不可变数据来保证状态的可预测性)不变, 组件树就不变....全局常量 上面使用Domain-style风格划分了LoginPage和HomePage目录, 将所有该业务或者页面相关的文件聚合在一起; 这里也使用Rails-style模式根据文件类型/职责划分不同的目录...再看一下PreviewPage, PreviewPage 是创建的数据预览页面, 数据结构和页面结构和 CreatePage 差不多.

    1.9K31

    一天梳理React面试高频知识点

    它提供了一系列的React组件,包括数字格式化、字符串格式化、日期格式化等。React-intl中,可以配置不同的语言包,他的工作原理就是根据需要,语言包之间进行切换。...通过this.props.location.state或this.props.location.query来获取即可,传递的参数可以是对象、数组等,但是存在缺点就是只要刷新页面,参数就会丢失。...简单地说, React中元素(虛拟DOM)描述了你屏幕上看到的DOM元素。换个说法就是, React中元素是页面中DOM元素的对象表示方式。...Redux实现原理解析为什么要用reduxReact中,数据组件中是单向流动的,数据从一个方向父组件流向子组件(通过props),所以,两个非父子组件之间通信就相对麻烦,redux的出现就是为了解决...state里面的数据问题Redux设计理念Redux是将整个应用状态存储到一个地方上称为store,里面保存着一个状态树store tree,组件可以派发(dispatch)行为(action)给store

    2.8K20

    一天梳理完react面试高频题

    处理异步操作,actionCreator的返回值是promise如何配置 React-Router 实现路由切换(1)使用 组件路由匹配是通过比较 的 path 属性和当前地址的...通过this.props.location.state或this.props.location.query来获取即可,传递的参数可以是对象、数组等,但是存在缺点就是只要刷新页面,参数就会丢失。...(3) Virtual DOM真实页面对应一个 DOM 树。传统页面的开发模式中,每次需要更新页面时,都要手动操作 DOM 来进行更新。 DOM 操作非常昂贵。...,则生成新真实的DOM,随后替换页面中之前的真实DOM【旧虚拟DOM】 中未找到 与 【新虚拟DOM】相同的key 根据数据创建真实DOM,随后渲染到页面什么是state组件初始化的时候 通过this.state...会高效的根据新的状态构建虚拟DOM树,准备渲染整个UI页面计算新老树节点差异,最小化渲染 得倒新的虚拟DOM树,会计算出新老树的节点差异,会根据差异对界面进行最小化渲染按需更新 差异话计算中,react

    4.1K20

    React-全局状态管理的群魔乱舞

    全局状态管理库需要解决的问题 ❝ 从组件树的「任何地方」读取存储的状态 写入存储状态的能力 提供「优化渲染」的机制 提供「优化内存使用」的机制 与「并发模式的兼容性」 数据的「持久化」 「上下文丢失」问题...一些「-redux」的全局状态管理解决方案中还有其他一些库,如Valtio[6],也允许开发者使用可变风格的API。...与并发模式的兼容性 「并发模式」允许React「渲染过程中 "暂停 "并切换优先级」。以前,这个过程是完全同步的。 React引入并发特性,通常会引入「边缘案例」。...随着应用程序的发展,Redux 倾向于「吸纳所有的状态」,不管它是什么类型,因为它提倡单一的存储。 这通常会「导致将所有的东西存储一个大的单体存储中」。...库 描述 React-Redux 「手动」管理 Recoil 0.3.0版本- 「自动」管理 Jotai 「自动」管理 - atoms作为键存储WeakMap中 Zustand 「半自动」--API

    3.7K20

    Redux设计思想与使用场景

    一、前言 Redux 作为 React 全家桶的一名重要成员,众多大牛的力荐之下得到了广泛的应用,Github 上的 Star 也达到 42k 之多!...所以本质来说,用户看到的页面,是Model 某个状态下的视觉呈现。 页面切换,可以简单理解为 Model 的状态变迁(同时也会涉及到 UI 的状态变迁)。...可以服务器端直接计算出 state 再存到 HTML 中,然后客户端秒开页面 方便的序列化用户操作和对应的 state 快照,在出现 bug 的时候可以利用这些信息快速复现问题 通过在网络中传递...让开发者可以定制自己的开发工具 将 UI 和业务逻辑分离,使业务逻辑可以多个地方重用 另外,对于 React 来说,当遇到以下情况你或许需要 Redux 的帮助: 同一个 state 需要在多个 Component...使用之前,最好先弄清楚他能为你的程序带来什么,需要你做出怎样的妥协,也就是上文提到的交换方案。希望读完本文,你对Redux 的设计思想与使用场景有一个更全面的了解。

    1.1K21

    React SSR 简介与 Next.js 使用入门

    于是有些网站就做了优化,比如把重要的页面通过服务端渲染。如今 React、Vue 等框架的出现,也让服务端渲染发生了一些变化。...hashChangeStart 开始切换 hash 值但是没有切换页面路由时触发; hashChangeComplete 完成切换 hash 值但是没有切换页面路由时触发; 下面是绑定事件的例子: import...next-redux-app --example 后跟的是参数,前一个参数是固定的,表示使用 redux一个是项目目录的名字。...创建好,最外层会有一个 lib 目录和一个 store.js 文件。运行 npm run dev ,就可以看到页面了。...hook,它是默认程序的一个工具函数,实际开发中可能并不会用到; 普通的 React + redux 项目中,一般会使用 react-redux 库。

    9.7K51

    redux 应用中使用 GraphQL

    Redux 应用中获取和管理数据需要做许多工作。...正如 Sashko Stubailo 指出的: 不幸的是, Redux 应用程序中异步加载服务器数据的模式还没有建立起来,并且经常需要使用外部帮助程序库,如 redux-saga。...您需要编写自定义代码来调用服务器接口,解释数据,对其进行规范化并将其插入到存储中 - 同时跟踪各种错误和加载状态。 本教程中,您将学习如何通过 Apollo Client 来获取和管理数据。...有一定的 React/Redux 经验——否则,请先阅读 react 教程和 redux 教程 ---- 本教程中,我们将学习以下6个小节。.../react-redux-starter-kit.git) $ cd react-redux-starter-kit $ npm install $ npm start 浏览器中打开 http://localhost

    1.9K10

    打造属于自己的博客app——基于react native和博客园接口

    使用的主要技术和插件: 插件 说明 react redux react state管理方案 react-navigation react native新的页面导航方案 react-native-elements...之前版本的react native 的页面导航没有一个很好的解决方案,最大的问题就是页面切换的卡顿,很多第三方的导航组件使用起来性能更差,还不如自己开发。...redux是一个state管理的解决方案,是一个单独的项目,react redux是基于react 的解决方案,而异步的react redux会更加复杂一点。...性能问题 页面切换性能 强烈建议使用react-navigation,直接使用navigation组件,总是存在卡顿的情况,android环境特别明显,使用react-navigation整个人都好了。...最好是release环境下测试下。

    1.3K50

    前端插件以及部分细分网址梳理

    todomvc: 分别基于 AngularJS/EmberJS/Backbone等实现的 TODO List, 帮助开发者选择前端 MVC 库 localForage: Mozilla 出品,用于离线存储...是从 IOS6 开始支持的一个新特性, 这个插件提供了对早期 IOS4/5 和 Android 的支持 jquery.scrollTo: 页面上以一个元素为起始以动画的方式移动(ScrollTo)到另一个元素..., 性能良好, 尤其是对手机的支持, 压缩的大小约 5kb slick: 功能异常强大的一个图片滑动切换效果库 SocialButtons: 漂亮的社交按钮 sweetalert: 一个非常美观的用于替换浏览器默认...Router 中文文档 https://react-guide.github.io/react-router-cn/ react-redux 中文文档 http://cn.redux.js.org/docs.../react-redux/index.html 阮一峰Redux 入门教程 react: React 框架源代码 react-native: Facebook 出品的使用 React 开发 IOS 原生应用的框架

    5.7K90

    React】归纳篇(十)组件间通信方式之Redux | UI组件AntDesign | Redux-react

    react-router4 react-router概览 1、react的一个插件库 2、专门用于实现一个SPA应用 3、基于react的项目都会用到该库 SPA 1、点击页面中的链接不会刷新页面,本身也不会向服务器发送请求...(即:页面地址的跳转都是浏览器端实现的,不会去重新请求服务端获取 html,html 只是应用初始化的时候加载一次。)...2、点击路由链接时,只会发生页面局部更新 3、数据通过ajax请求,在前端异步展示 4、整个应用只有一个完整页面,该页面由各种组件构成,页面切换其实就是不同组件的切换,你只需要在配置中把不同的路由路径和对应的组件关联上即可...单页应用的功能示意图如下: 路由 点击导航选项的时候,让对应内容填充的到页面,实现这种效果的方式就是路由。...react-redux 1、一个react插件库 2、专门用于简化react应用中使用redux 使用redux先写好结构: src中新建redux和containers文件夹 redux文件夹下写好如下文件名

    24830
    领券