javascript - React 路由不工作 v4

标签 javascript reactjs react-router

我正在尝试使用 BrowserRouter 路由多个页面。许多在线指南已经过时,并且不适用于 Reactv4。这就是我正在做的事情:

索引.js:

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import SignIn from './components/SignIn';
import SignUp from './components/SignUp';
import ForgotPass from './components/ForgotPass';

ReactDOM.render((<BrowserRouter>
  <Switch>
    <Route path="/" component={SignIn}/>
    <Route path="/signup" component={SignUp}/>
    <Route path="/forgot" component={ForgotPass}/>
  </Switch>
</BrowserRouter>), document.getElementById('root'));

然后我使用以下方法创建指向这些页面的超链接:

<a href="/forgot">Forgot password?</a>

但是当我单击超链接时,它只会再次加载同一页面。

另外:我看到一些指南使用了 App 组件,我不确定这是否是 React 中预定义的东西以及是否需要它,因为我需要 SignIn 组件作为默认页面。

最佳答案

将精确的平面放在您的根路径上。否则,它将在到达较低路由之前在交换机中进行匹配。

 <Switch>
    <Route exact path="/" component={SignIn}/>
    <Route path="/signup" component={SignUp}/>
    <Route path="/forgot" component={ForgotPass}/>
 </Switch>

或者将其移至末尾:

<Switch>
    <Route path="/signup" component={SignUp}/>
    <Route path="/forgot" component={ForgotPass}/>
    <Route path="/" component={SignIn}/>
 </Switch>

关于javascript - React 路由不工作 v4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084733/

相关文章:

javascript - 如何使用具有对象相等性的 $watchGroup 或深入观察组中的属性?

reactjs - 如何将后端 Go 服务器链接到前端 ReactJS?

javascript - 具有 2 个入口点的 React 路由器

javascript - React onInput - IE9/10 event.target.value 为空?

import - React Router 删除无法找到模块“react-router/lib/HashHistory”

javascript - 警告 : Failed propType: Invalid prop 'component' supplied to 'route'

javascript - meSpeak.js - 使用回调方法时不播放第二个单词

javascript - ExtJs 表单字段如何工作

javascript - 在表格单元格内拉伸(stretch)的 div 垂直溢出

javascript - 墙壁碰撞检测、穿墙故障