我有一个这样的redux状态:
{
currentItemId: 1,
items: [{id: 1, name: 'todo 1'}, ...]
}
如果设置了currentItemId
,应用程序将显示项目的详细信息。
现在,在极少数情况下,当currentItem设置为ID而不表示items数组中的item时,我希望重定向回来。
捕获它的一个好地方似乎是我们的ItemForm
的connect
,在那里我可以发出重定向。
问题是,它会抱怨调用setState
,也许我需要做的就是将其安排在以后。
我还希望确保不显示ItemForm
,以防找不到该项目。
在这种情况下,正确的做法是什么?
发布于 2017-06-12 15:39:39
重定向的方式略有不同,具体取决于您使用的路由方法。假设你使用的是react-router-dom,我会在render或componentDidMount中做一个重定向。假设您将currentItemId映射到组件的属性,则可以使用withRouter HOC执行类似以下操作。
componentDidMount() {
if(!this.props.currentItemId) { // Or whatever value you want to check for
this.props.history.push('/redirectpageurl');
}
}
在react-router-dom中执行重定向的另一种方法是呈现Redirect component。
render() {
if(!this.props.currentItemId) {
return <Redirect to="/redirectpageurl" />
}
// ...
}
https://stackoverflow.com/questions/44493693
复制相似问题