【发布时间】:2017-08-21 15:08:44
【问题描述】:
我正在使用 react 创建网络应用程序,目前在浏览页面时遇到问题。以下是详细说明。希望有人可以帮助我。
我的组件(Task)是这样的(简化)
class Tasks extends Component {
constructor(props) {
super(props);
this.type = props.match.params.type;
}
render(){
return ( <h1>{this.type} </h1> );
}
}
我使用 react-router-dom 从一个单独的组件进行路由,如下所示
:
:
import {BrowserRouter as Router, Route, Switch, Redirect} from 'react-router-dom'
:
<Route path={"/tasks/:type/"} component={Tasks} />
最后我通过如下设置 url 从我的导航菜单中调用这个路由组件
import MenuItem from 'material-ui/Menu/MenuItem';
<MenuItem>
<Link name="application_creation" to="/tasks/type1">Type One</Link>
</MenuItem>
<MenuItem>
<Link name="application_creation" to="/tasks/type2">Type Two</Link>
</MenuItem>
使用此实现,当我选择一个 url(从导航菜单)时,它不会按预期工作。选择一个然后选择另一个时,它不会按预期导航。如果我在浏览器上键入 url 或刷新页面,它会指向正确的页面(其他 url)。
希望我把我的问题说清楚了 :D 。有人可以指导我如何解决这个问题吗?
谢谢
【问题讨论】:
-
我会说尝试
HashRouter而不是BrowserRouter- 它会简化开发过程,因为它就像您期望的那样工作。开发应用程序后,您可以考虑重构为BrowserRouter。 -
return ( <h1>{this.type} </h1> );- 如果props.type更改,则不会更新,因为您只在构造函数中同步它 -
与@DimitarChristoff 所说的相呼应。根本不需要根据你所拥有的来使用一个类