javascript - ReactJS:使用浏览器按钮导航时保存状态

标签 javascript reactjs

我的应用程序有两个页面,首先是主页,它是一个项目列表,加载了 ajax,并支持分页。当您单击列表中的一个项目时,它将呈现一个新页面,显示该项目的详细信息。我正在使用 react-router,它工作正常。

但是,当我按下后退按钮时,我会回到主页,之前的所有状态都丢失了,我必须再次等待ajax加载,并且分页也丢失了.

那么,我该如何改进,让页面像普通页面一样(当你按下后退按钮时,即使滚动位置相同,你也可以立即返回到之前的状态),谢谢。

最佳答案

我自己通过提供一个模块 Store 解决了这个问题,它是这样的:

// Store.js

var o = {};

var Store = {
  saveProductList: function(state) {
    o['products'] = state;
  },
  getProductList: function() {
    return o['products'];
  }
};    

module.exports = Store;

然后在首页组件中,加载并保存状态:

componentDidMount: function() {
  var state = Store.getProductList();
  if (state) {
    this.setState(state);
  } else {
    // load data via ajax request
  }
},

componentWillUnmount: function() {
  Store.saveProductList(this.state);
}

这对我有用。

关于javascript - ReactJS:使用浏览器按钮导航时保存状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29446247/

相关文章:

javascript - Jstree复选框,仅获取子ID

javascript - 如何使用 RingCentral Web 电话客户端库取消注册用户代理?

javascript - 将字符串转换为 javascript 代码

javascript - 取消选中reactjs中的单选按钮

javascript - 如何在react.js组件中通过表格显示json数据

javascript - 创建打印链接

javascript - Webpack/Babel 错误 : Module build failed: (SystemJS) ENOENT: no such file or directory

reactjs - react 状态行为

javascript - 我在向 CSS 中的文本框添加文本时遇到问题

javascript - 下拉更改事件通过 api 调用与状态、无序列表和按钮可见性绑定(bind)