我试图通过将window.location设置为自定义uri将用户重定向到本机应用程序,因此,如果用户安装了该应用程序,它将在应用程序中打开该页面。
登录组件:
componentDidMount() {
const { match: { params: { domain } } } = this.props
if (domain) this.setState({ domain })
if (typeof window !== 'undefined') {
window.location = `clickclock://login/potato`
}
}
通过反应路由器渲染:
<Route path="/login/:domain?" render={props => status ? redirect("/") : <LoginPanel {...props} onLogin={onLogin} />} />
问题在于,当按下此按钮以推动历史记录显示登录组件时,重定向将起作用:
<Button text="Login" onClick={() => { history.push('/login') }} />
,但直接在该路径中加载或重新加载页面时,此方法不起作用。
答案 0 :(得分:0)
似乎直接加载页面时,路由机制失败。
如果您正在使用服务器端渲染,则也应该在服务器端配置/login
路由。
如果仅使用webpack(您的站点是静态站点),则应确保在正确的文件夹中有一个名为login.html
的文件。
答案 1 :(得分:0)
我想您可以通过使用react-router
中的Redirect
组件来解决该问题,
import { Redirect } from 'react-router'
/* some code */
<Route path="/login/:domain?" render={props => status ? <Redirect to="/"/> : <LoginPanel {...props} onLogin={onLogin} />} />
答案 2 :(得分:0)
我发现window.location
的更改必须与要执行的用户操作有关(例如,单击按钮)。我所做的是一个询问用户他想做什么的屏幕,根据用户的响应,我是否进行了window.location
更改。