【问题标题】:How to use React Router with match.params?如何使用带有 match.params 的 React Router?
【发布时间】:2018-10-09 07:47:10
【问题描述】:

我正在做这个项目,我需要使用 React Router 创建一些路由。我的项目是:

每个方格都有一个 id 200201,我点击的每一个转弯我都想走这样的路线:http://localhost:3000/user/200http://localhost:3000/user/201,什么时候走那条路线,我想要它出现在body"User 200""User201",我看了文档但没看懂..

我的APP.JS

import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import './App.css';
import Home from './Home';

const App = () => (
  <Router>
    <Home/>
  </Router>
);


export default App;

我的HOME.JS

import React from 'react';
import Header from './Header';
import Body from './Body';
import './Home.css';

class Home extends React.Component {
  render() {
    return ( <
      div className = 'home' >
      <
      Header / >
      <
      Body / >
      <
      /div>
    )
  }
}

export default Home;

我的BODY.JS

import React from 'react';
import './Body.css';
import axios from 'axios';
import {
  Link
} from "react-router-dom";

class Body extends React.Component {
  constructor() {
    super();

    this.state = {
      employee: [],
    }
  }

  componentDidMount() {
    axios.get('http://127.0.0.1:3004/employee').then(
      response => this.setState({
        employee: response.data
      })
    )
  }

  getName = () => {
    const {
      employee
    } = this.state;
    return employee.map(name => < Link className = 'link'
      to = '/user' > < div key = {
        name.id
      }
      className = 'item' > < img className = 'img'
      src = {
        `https://picsum.photos/${name.name}`
      } > < /img> <h1 className='name'> {name.name} </h
      1 > < /div> </Link > )
  }

  render() {
    return ( <
      div className = 'body' > {
        this.getName()
      } <
      /div>
    )
  }
}


export default Body;

有人可以帮帮我吗?

【问题讨论】:

  • 嗨@Jota,我的回答解决了你的问题吗?

标签: javascript reactjs react-router react-router-dom


【解决方案1】:

一开始你没有正确设置你的路由器

App.js

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'

class App extends React.Component {
  render () {
    return (
      <Router>
        <Home>
          <Switch>
            <Route path='/user/:token' component={Body} />
          </Switch>
        </Home>
      </Router>
    )
  }
}

Home.js - 现在您将路由器包装在子级中

class Home extends React.Component {
  render () {
    return (<div className='home' >
      <Header />
      {this.props.children} {/* This line will render router children which will be Body */}
    </div>
    )
  }
}

正文.js

你现在会收到this.props.match.params的内部消息,我想你会自己弄清楚

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 2022-11-29
    • 2017-03-09
    • 2016-04-21
    • 1970-01-01
    • 2018-01-20
    • 2015-10-23
    • 2021-08-03
    相关资源
    最近更新 更多