好或坏,使用browserHistory的状态传递参数

时间:2017-02-10 08:27:03

标签: reactjs single-page-application

最近,我开始使用React构建单页应用程序,并且我选择了react-router来执行导航部分,但是当需要在页面之间传递参数时,我找到了来自官方文档是将参数作为查询字符串或参数添加到URL中,这不是我所期望的(我希望隐藏参数,就像我们在传统POST方法中与服务器通信时那样)。

经过一段时间的谷歌搜索,我找到了一个解决方案,打电话

browserHistory.push({
    path : '/Paradise',
    state : { location : 'Shangri-La'}
})

以browserHistory的状态传递参数,并使用

检索状态
this.props.location.state.location

这很好,而且正是我所期待的。我只想知道这是否是一个好习惯。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

良好做法是避免将其称为location ..对我来说,我称之为previousRoute

另一个好的做法是,我将browserHistory.push包装在名为redirect的方法中并放入超类中。

class Base extends React.Component {

   redirect(to, params  = {} ) {

      params = Object.assign(params, { previousRoute : this.props.location.pathname});
      return browserHistory.push({
        path :  to,
        state : params
      });

   }
}

然后:

class AnyOtherComponent extends Base {

    //... you can call 
   this.redirect('Paradise', {param1: val1});

}