如何在反应路由器转换中保持状态

Mat*_*lch 12 reactjs react-router

我已经设置了相当典型的react-router应用程序:

var App = React.createClass({
    render: function() {
        return ( < RouteHandler /> );
    }
});

var routes = (
    <Route handler = { App }>
        < Route name = "Todo" path = "todo/:id" handler = {Todo}/>
        < DefaultRoute name = "Todos" handler = {Todos}/>
    </Route>
);

Router.run(routes, function(Handler) {
    React.render( < Handler /> , document.getElementById('content'));
});
Run Code Online (Sandbox Code Playgroud)

我的问题是我的Todos组件上有一些搜索过滤器,我想在转换到特定的Todo并返回时保留这些过滤器.显而易见的解决方案是将这些过滤器值保存在App状态中,但我无法找到允许Todos访问App状态的优雅方法.

任何提示?

附录:此应用程序使用Reflux以及react-router.

Pet*_*dIt 5

我会使用 url 来保存列表的状态过滤器和页码。

反应路由器之一“这种方法的好处”是: URL 是您的第一个想法,而不是事后的想法

url 是网络的基础部分,使用它对你有利,不要试图避免它。

通过在 url 中保存过滤器状态,您可以获得免费的返回按钮支持,并且您允许您的用户将该过滤状态保留为书签或链接。

  • 如果您的视图非常复杂并且包含数十个状态、预取和呈现的数据怎么办?您不能将所有内容都放在 URL 中。滚动位置呢? (20认同)