希望这是一个非常简单的问题:
我想创建一个包含网站页面完整网址的字符串,例如:
https://example.com/documents/1
理想情况下,我想在connect()
中的react-redux mapStateToProps()
ed容器中生成此内容。页面是使用browserHistory的react-router Route
的孙子(所以我可以以某种方式从react-router或browserHistory获取它?)如果有必要,我会在一个完整的React类中完成它。
但我不能为我的生活找到如何做到这一点。 window
window.location
中undefined
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/)
答案 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