我正在尝试重定向到我的主路由,如果我的数据库中没有匹配locks
的锁定ID。我从Redux州获得const lockId = this.props.match.params.lockId
const locks = this.props.locks || []
const lock = locks.find(lock => lock._id === lockId)
if(!lock) {
this.props.history.push('/')
}
。
此:
address
工作正常,因为我可以看到我的网址正在发生变化,但我仍然尖叫着它无法找到return (
<div>
<MainNavbar />
<Grid>
<Row className="show-grid">
<Col md={12}>
<h1 className="text-center">{lock.address.street}</h1>
:
componentWillReceiveProps
我理解为什么因为没有具有该ID的锁定,但这就是我想将用户重定向到主屏幕的原因。我应该使用其他类型的React生命周期方法,例如componentDidMount() {
if (!this.props.lock) {
console.log("redirecting..")
this.props.history.push('/')
}
}
吗?我很沮丧嘿嘿
Georgy在评论中回答。 你的意思是这样的吗?
const lockId = this.props.match.params.itemId
const locks = this.props.locks || []
const lock = locks.find(lock => lock._id === lockId)
if(!lock) {
return null
}
...
{{1}}
答案 0 :(得分:1)
我认为你应该使用componentDidMount
,它发生在渲染之前。并且在render方法中,如果lock不存在,则应返回null。
答案 1 :(得分:0)
我发现这有效:
if(!lock) {
window.location.href = '/'
}
但感觉这不是React开发的最佳实践。