React-redux获取站点基础URL / window.location

时间:2016-07-20 23:42:58

标签: reactjs react-router react-redux

希望这是一个非常简单的问题:

我想创建一个包含网站页面完整网址的字符串,例如:

https://example.com/documents/1

理想情况下,我想在connect()中的react-redux mapStateToProps() ed容器中生成此内容。页面是使用browserHistory的react-router Route的孙子(所以我可以以某种方式从react-router或browserHistory获取它?)如果有必要,我会在一个完整的React类中完成它。

但我不能为我的生活找到如何做到这一点。 window window.locationundefined mapStateToProps() render()总是# to get the video fps fps="$(ffmpeg -i $VarIN 2>&1 | sed -n 's/.*, \(.*\) fp.*/\1/p')" transcode -J stabilize -i vidIn.mp4 transcode -J transform -i vidIn.mp4 -f $fps -y raw -o vidOut.avi (在那里没有什么大惊喜),在我看来,组件'{{1}}功能。{/ p>

到目前为止,我只找到了访问当前路线的方法,例如“/ documents / 1”,这只是一个相对路径,不包含网站基本网址(https://example.com/

3 个答案:

答案 0 :(得分:12)

首先,请记住您的代码在客户端和服务器上运行,因此任何对窗口的访问都需要包含在支票中。

  if (typeof window !== 'undefined') {
    var path = location.protocol + '//' + location.host + '/someting'; // (or whatever)
  } else {
    // work out what you want to do server-side...
  }

如果您生成的URL显示在DOM中,并且在客户端上,您在第一次呈现之前使用此URL填充商店,那么您将收到校验和错误。如果确实想要避免错误,您可以等到根组件中的componentDidMount()来获取/设置网址。

答案 1 :(得分:1)

在componentDidMount之后,您可以直接访问原始位置,以便获得根URL。

我一直在JSX中使用以下代码,这样我就不必担心根路径,例如:dev env将是localhost:3000/whatever,暂存将是AppStaging.heroku/whatever/.....并投入生产它将评估为www.myapp.com/whatever

`${window.location.origin.toString()}/whateverRoute/`

答案 2 :(得分:1)

你可以试试!!

window.location.origin