Простая маршрутизация на странице. Как настроить правильный дисплей? - PullRequest
0 голосов
/ 18 июня 2020

На странице есть ссылки, и каждая ссылка имеет собственный вывод, т.е.

эта страница равна 1 для id = 1, эта страница равна 2 для id = 2 и т. Д.

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

Как мне исправить свой код, чтобы все работало правильно?

https://codesandbox.io/s/naughty-buck-94x6y?file= / src / App. js

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Прежде всего, вы визуализируете несколько Switch компонентов, когда визуализируете маршруты, повторяя this.state.cards. Решение состоит в том, чтобы просто переместить компонент Switch за пределы возвращаемого значения в this.state.cards.map(() => {...}).

Вам не нужно l oop над массивом card для создания компонентов Route если вы хотите, чтобы они совпадали по пути api/events/:id. Если по какой-то причине вам нужны только три компонента Route с путями /api/events/1, /api/events/2 и api/events/3, вам даже не нужно сопоставлять их по api/events/:id, вы можете просто l oop поверх массива карт и вернуть компонент Route с помощью path={"/api/events/"+id}

import React from "react";
import "./styles.css";
import Main from "./Main";
import Description from "./Description";
import { Link, Route, BrowserRouter, Switch } from "react-router-dom";

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      card: [1, 2, 3]
    };
  }

  render() {
    return (
      <BrowserRouter>
        <div>
          <Switch>
            <Route exact path="/">
              {this.state.card.map(id => {
                return (
                  <Link to={"/api/events/" + id}>
                    <Main number={id} />
                  </Link>
                );
              })}
            </Route>
            <Route path="/api/events/:id" component={Description} />
          </Switch>
        </div>
      </BrowserRouter>
    );
  }
}

export default App;

Вам не нужно передавать id как опору в компонент Description, если вы решите отображать маршруты, соответствующие имени пути /api/events/:id. Вы можете использовать match.params, чтобы получить идентификатор. См. коды и для демонстрации.

0 голосов
/ 18 июня 2020

Если вы хотите использовать список IDs в качестве генератора маршрутов c stati. Вы можете сделать это с помощью al oop из Link и Route. Я сделал CodeSandbox для лучшего понимания

https://codesandbox.io/s/rough-surf-48nhp?file= / src / App. js

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