React中的永久国家 - React-Router

时间:2017-05-05 11:23:23

标签: reactjs react-router navbar

我有一个问题:我有一个NavBar,它加载一个AJAX,用于检索名称和另一个数据。好吧,问题是这些数据将它们存储在声明的组件本身的状态为NavBar.jsx,当我使用路由(react-router)时,组件被安装和拆除而失去其状态,因此,每次路由更改时重新进行AJAX调用。同样的问题我有一个按钮' Enter',其状态为1,当有人登录时,状态为0,但每次更改路径都返回状态1(好像没有记录,虽然它实际上已记录)。我的问题是:如何在不改变路线的情况下创建维持状态? (我知道这是不可能的,状态我指的是变量,或者我可以声明的每次重新组装组件时都不会改变值,在这种情况下是NavBar,当改变路径时。谢谢。

1 个答案:

答案 0 :(得分:1)

这可以通过多种方式解决。

  1. 将返回的数据保存在localStorage中,在执行ajax调用之前检查localStorage,数据是否存在,只需使用它。

  2. 使用redux - 这会将状态移动到应用程序级别而不是组件,卸载组件不会删除状态。

  3. 不要在每个导航上重新渲染导航栏(如果您的应用可以使用该导航栏)。 请参阅反馈路由器的嵌套路由教程; https://github.com/reactjs/react-router-tutorial/tree/master/lessons/04-nested-routes

  4. 此选项意味着路线更改只会重新呈现"内部页面"而不是像导航栏,子菜单,页脚等那样不变的东西。