Как передать параметр с помощью React Router? - PullRequest
0 голосов
/ 06 ноября 2019

Когда я пытаюсь передать параметр, используя react-router-dom, я получаю ошибку 404 Not Found. Если я удаляю параметр, он работает нормально. Я хотел бы передать имя пользователя на страницу, чтобы оно могло динамически меняться.

import React, { Component } from 'react'
import "../css/App.css"
import { BrowserRouter as Router, Switch, Route, withRouter } from 'react-router-dom'
import WelcomeVisitor from '../pages/WelcomeVisitor'
import ThankYou from '../pages/ThankYou'
import RabbitmqService, { connectRabbit } from '../rabbitmq/RabbitMQService'


function App(){


    connectRabbit()

    return (
      <Router>
        <div className="App">
          <Switch>
            <Route path="/thankyou" component={ThankYou}/>
            <Route path="/welcome/:user" component={WelcomeVisitor}/>
          </Switch>
        </div>
      </Router>
    );

  }

export default App

Компонент WelcomeVisitor:

import React from 'react'
import "../css/WelcomeScreen.css"
import Trapezoid from '../components/Trapezoid'
import GuestName from '../components/GuestName'
import Logo from '../components/Logo'

export default function WelcomeVisitor(props){
    return (
        <div className="parentView">
            <Trapezoid />
            <GuestName guestName={props.match.params.user}/>
            <Logo />
        </div>
    )
}

Компонент GuestName:

import React from 'react'
import '../css/GuestName.css'


export default function GuestName(Guest){
    console.log(Guest.guestName)
    const name = Guest.guestName
    return(
        <div>
            <h1 className="guestName"> {name} </h1>
        </div>
    )
}

Index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App';

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

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <script src="//cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>My React App</title>
</head>

<body>
    <div id="app"></div>
</body>

</html>

Например, когда я ввожу http://localhost:8080/welcome/bob, я получаю 404, и он говорит, что URL-адрес запроса Request URL: http://localhost:8080/welcome/index_bundle.js.

1 Ответ

0 голосов
/ 06 ноября 2019

Если вы можете выполнить обновление до последнего реагирующего маршрутизатора, вам больше не нужно обрабатывать компонент встроенным. Вы можете использовать:

<Route path='/foo' > <Foo userName='JohnSnow' /> </Route>

Однако для более старых версий вы можете использовать реквизит рендеринга (примечание, что для рендеринга реквизитов есть только совпадение, местоположение и история. Вы можете передавать переменные в компонент, которыйявляется дочерним элементом)

<Route path='/foo' render={(renderProps) => <Foo userName={some Username} />} >

Возможно, в нем есть опечатки, но вы должны понять это. (печатать с мобильного).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...