标签: react-router-v4

React Router 中的中间 URL 参数

我正在尝试路由一条带有中间参数的路径。这是我的路线的样子。

import Events from "./views/EventsView";
import Event from "./views/EventView";
import NotFound from "./views/NotFoundView";
import RegistrationView from "./views/RegistrationView"

export default [
  {path: "/", component: Events, exact: true},
  {path: "/events", component: Events, exact: true},
  {path: "/events/:projectId", component: Event, exact: true},
  {path: "/events/:projectId/register", component: RegistrationView, exact: true},
  {component: NotFound}
]
Run Code Online (Sandbox Code Playgroud)

然后我将我的路线映射到 a <Switch>which 中 a 中<Router>

<Switch>
    {
        return routes.map(({path, component, exact}, key) =>
            <Route key={key} path={path} component={component} exact={exact}/>)
}
</Switch>
Run Code Online (Sandbox Code Playgroud)

Link用来访问Event组件。

<Link to="/events/1234">Title Here</Link>
Run Code Online (Sandbox Code Playgroud)

问题 …

javascript reactjs react-router react-router-v4 react-router-dom

1
推荐指数
1
解决办法
1524
查看次数

如何在 React 中执行返回功能

我正在使用react-router v.4,我想执行一些返回功能。

我当前的代码如下所示:

<HashRouter>
       <Switch>
            <Route exact path='/' component={Main}/>
            <Route path='/secondview' component={SecondView}/>
            <Route path='/traineeships' render={()=>(<Traineeship rootState={this.state} setRootState={this.setState.bind(this)} />)}/>
            <Route path='/information-filter' render={()=>(<InformationFilter rootState={this.state} setRootState={this.setState.bind(this)} />)}/>
            <Route path='/find-work' render={()=>(<FindWork rootState={this.state} setRootState={this.setState.bind(this)} />)}/>
            <Route path='/information-job' render={()=>(<InformationJob rootState={this.state} setRootState={this.setState.bind(this)} />)}/>
            <Redirect from='*' to='/' />
       </Switch>
Run Code Online (Sandbox Code Playgroud)

this.props.history.go(-1)在其他组件上尝试了几个选项,但我遇到了未定义的错误。

任何人都知道如何在我的情况下执行返回功能?

javascript reactjs react-native react-router-v4

1
推荐指数
1
解决办法
9273
查看次数

react-router v4 的 Route 没有将它的 props 传递给组件 - 在 React Typescript 中

我刚开始使用 React Router v4,无法使用 Browserrouter 的历史记录。例如,当我尝试访问时this.props.history.push("/")出现错误:

TS2339: Property 'history' does not exist on type 'Readonly<{ children?: ReactNode; }> & Readonly<{}>'

我正在将 React Router v4 与 Browserrouter 一起使用,并将 React 与 Typescript 一起使用。来自 React Router 的 Route 的三个道具(位置、历史、匹配)似乎没有传递给它的组件。 我在 Typescript 或 React Router 上做错了什么吗?

索引.tsx

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import 'bootstrap/dist/css/bootstrap.min.css';
import './index.css';
import {
    BrowserRouter as Router, Route
} from 'react-router-dom';
import Login from "./Login";
import Questionnaire from "./Questionnaire";
import Registration …
Run Code Online (Sandbox Code Playgroud)

browser-history typescript reactjs react-router-v4

1
推荐指数
1
解决办法
2248
查看次数

React Router - 未捕获的 SyntaxError: Unexpected token &lt; 使用参数刷新 URL 时

我正在使用react 16and react router 4, webpackand webpack dev server

我确实有以下几点Route

<Route path="/company/:symbol" render={this.getCompanyPageRoute} />
Run Code Online (Sandbox Code Playgroud)

我确实通过以下方式导航到这条路线:

this.props.history.push('/company/blablabla');
Run Code Online (Sandbox Code Playgroud)

一切正常。但是,如果我使用此 URL 刷新页面,则会出现以下错误:

未捕获的语法错误:意外的标记 <

我已经看到有几个关于这个错误的帖子,但我并没有按照这些链接来解决这个问题。

javascript typescript reactjs react-router react-router-v4

1
推荐指数
1
解决办法
2667
查看次数

React Router Switch 语句中的路由分组为内部组件,不会转到 Not Found 路由

如果未找到路线,我正在尝试呈现“未找到”页面。我将路线分成模块。因此,当我执行 switch 语句时,在 switch 的底部添加未找到的页面,例如:

const AccessRoutes = () => {
return (
    <React.Fragment>
        <Route path="/login" exact component={Login}/>
        <Route path="/register" exact component={Register} />
        <Route path="/forgot-password" exact component={ForgotPassword}/>
    </React.Fragment>
       )
}
export default () => {
    return (
     <Switch>
         <AccessRoutes/>
         <Route render={() => <div>Not found</div>}
     </Switch>
    )
}
Run Code Online (Sandbox Code Playgroud)

当您输入不在 上的路径时,未找到的路径永远不会匹配AccessRoutes,例如/hey显示空白屏幕。如果我放置路由而不将它们包装在另一个组件中,它就可以工作。

我缺少什么?

reactjs react-router react-router-v4 react-router-dom

1
推荐指数
1
解决办法
1188
查看次数

React-Router Link 变量未转换为值

我正在使用 react-router Link 组件使用/customers/${id}. 链接导航到正确的组件,但不是将 ${id} 转换为其值,而是将其作为文本传递,如下所示:' /customers/$%7Bid%7D'。

我正在使用反应路由器 4.3.1

我正在学习 React 并且正在创建一个简单的主/详细 web 应用程序。我已成功从我的 API 检索数据并将其呈现为列表。我希望能够单击列表中的项目并导航到将唯一 ID 作为参数传递的详细信息组件。

我尝试了各种方法,但基本上,${}无论我尝试什么,我都无法开始工作。我试图用谷歌搜索这个问题,但没有找到任何有类似问题的人。我已经阅读了许多关于如何使用 react-router v4 设置路由的文章,并且正在关注这些但遇到了这个问题。

如果我尝试手动传入链接,则路由可以正常工作,并且可以正确导航到呈现特定客户的详细信息组件。

<Link to={'/customers/${this.props.item.Id}'}>{this.props.item.Name}</Link>
Run Code Online (Sandbox Code Playgroud)

路线如下所示:

<Route path='/customers/:Id' component={CustomerDetails} />
Run Code Online (Sandbox Code Playgroud)

我希望链接生成以下 URL:/customers/3但实际结果是/customers/%7Bthis.props.item.Id%7D 变量名称拼写正确。

reactjs react-router-v4

1
推荐指数
1
解决办法
2374
查看次数

在 react-router v4 中看到嵌套路由中的空白页

我是新手,仍在学习。我正在尝试在我的 React 项目中添加嵌套路由,以便 div 的内容根据路由而变化。

以下是我的组件:-

//index.js

import 'bootstrap/dist/css/bootstrap.min.css';
import 'font-awesome/css/font-awesome.min.css';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

library.add(faIgloo);

ReactDOM.render(<BrowserRouter>
  <App />
</BrowserRouter>, document.getElementById('root'));

serviceWorker.unregister();


// app.js
import React, { Component } from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';
import Login from './components/login/login.js'
import Protected from './components/protected/protected.js'



import './App.css';

class App extends Component {

  render() {
    return (
        <Switch>
          <Route exact path="/protected" component={Protected}/>
          <Route path="/login" component={Login}/>
        </Switch>
    );
  }
}

export default …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router-v4 react-router-dom

1
推荐指数
1
解决办法
5552
查看次数

无法使用 Link 组件传递状态。为什么状态未定义?

我正在尝试学习“react-router”,我正在制作一个应用程序,它有一个输入字段,为您提供一个下拉列表,其中包含欧洲各个火车站的链接,当您单击该链接时,它将呈现一个组件,在此封装Station组件并显示有关该站的更多详细信息。

对于此应用程序,我必须对外部 API 进行两次调用。第一个是找到火车站并将其显示在下拉列表中。这是有效的,从那里我可以获取电台的名称并将其放入下拉列表中,我还获得了一个id用于查询第二个 API 以获取电台的详细信息的名称。当用户单击下拉列表中的电台时,就会发生这种情况。这现在有效。我的问题是,当用户单击下拉列表中的电台时,我已经丢失了电台的名称。我想以某种方式将其传递给车站组件。

这是我的车站组件:

const Station = (props) => {
 return (
  <h1>Station name: {props.location.state.name}</h1>
 )
}

export default Station;
Run Code Online (Sandbox Code Playgroud)

这是下拉组件,为了简单起见,我对两个电台进行了硬编码以尝试使其工作,否则下拉列表是与用户查询匹配的电台列表。

const Dropdown = (props) => {

return (
<ul>
  <li>
    <Link to={'/station/London'} key="lon" state={{name: 'London Central Station'}}>London </Link>
  </li>
  <li>
    <Link to={'/station/Paris'} key="par" state={{name: 'Paris Central Station'}}>Paris</Link>
  </li>
</ul>
  )
  }

export default Dropdown;
Run Code Online (Sandbox Code Playgroud)

我尝试使用组件state中的 prop传递站名称Link,但是当Station组件安装时,该名称props.location.state是未定义的。

最后是我的路线:

const Details = (props) => {
return …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router react-router-v4 react-router-dom

1
推荐指数
1
解决办法
4356
查看次数

在 React 中单击导航栏标题上的注销按钮后如何重定向到登录页面?

我是反应新手。我在 App.js 中有这样的反应路由器配置:

<BrowserRouter>
    <div className="App">
      <Header />
      <Switch>
        <Route exact path="/" component={Home}>
        </Route>
        <Route exact path="/management" component={Management}>
        </Route>
        <Route exact path="/sign-up" component={SignUpForm}>
        </Route>
        <Route exact path="/sign-in" component={SignInForm}>
        </Route>
        <Route component={Error}>
        </Route>
      </Switch>
    </div>
  </BrowserRouter >
Run Code Online (Sandbox Code Playgroud)

我希望每个页面都显示标题,标题处有一个注销按钮,我想在单击它后重定向到/登录页面。在我的标头组件中,它是这样的:

class Header extends Component {
constructor(props) {
    super(props);
    this.state = {
        redirect: false
    }

}
logout = () => {
    sessionStorage.setItem("userToken", '');
    sessionStorage.clear();
    this.setState({ redirect: true });


}
render() {
    if (this.state.redirect) {
        return (
            <Redirect to={'/sign-in'} />
        )
    }


    return (
        <div> …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router-v4

1
推荐指数
1
解决办法
1万
查看次数

如何正确实现页面转换的 React Transition Group

我整天都在扯头发,试图让它发挥作用。我注意到的是,无论出于何种原因,过渡类 (classNames="fade") 永远不会应用于页面元素。因此,当我从一个页面导航到另一个页面时,两个页面组件都会在短时间内(超时时间)显示。

我应该在 600 毫秒内拥有什么...

<div class="RTG"> 
    <div class="page fade-appear fade-enter fade-enter-active"> <!-- 
destination component HTML --></div>
    <div class="page fade-exit fade-exit-active"> <!-- start component HTML --></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我得到的是..

<div class="RTG">
   <!-- "fade..." classes never applied to the child nodes" -->
   <div class="page"> <!-- destination component HTML --></div>
   <div class="page"> <!-- start component HTML --></div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后在 600 毫秒超时后,我只剩下......

<div class="RTG">
   <div class="page"> <!-- destination component HTML --></div>
</div>
Run Code Online (Sandbox Code Playgroud)

注意 1:我将“RTG”类名放在 TransitionGroup 组件上,只是为了验证我的“页面”类组件实际上是 TransitionGroup 组件的直接后代。不存在任何其他原因。

注意 2:我使用的是 react-transition-group@2.4.0,因为我与最新版本存在兼容性问题。 …

reactjs react-router react-router-v4 react-router-dom react-transition-group

1
推荐指数
1
解决办法
1983
查看次数