Как реализовать динамические страницы в React.js?

import React, { Component } from "react";
import { FormattedMessage } from "react-intl";
import { connect } from "react-redux";

class Project extends Component {
  render() {
    return (
      <div
        className = {
          "ih-item square effect6 from_top_and_bottom grid-item " +
          this.props.category +
          " " +
          this.props.widthClass
        }
      >
        <FormattedMessage id = "route.project">
          {route => {
            return (
              <a href = {"/" + route + this.props.url}>
                <div className = "img">
                  <img src = {this.props.mainImage} alt = "img" />
                </div>
                <div className = "info">
                  <h3>{this.props.header}</h3>
                  <p>{this.props.description}</p>
                </div>
              </a>
            );
          }}
        </FormattedMessage>
      </div>
    );
  }
}

const mapStateToProps = state => {
  return {
    projects: state.project.projects
  };
};

export default connect(
  mapStateToProps,
  {}
)(Project);

Как реализовать страницы проектов и собственный URL для каждого из них. Я предполагаю, что пользовательские URL-адреса должны быть сделаны с MongoDB, но как реализовать это в reactjs. Это третий день моих исследований, но в основном я находил сложный код

Спасибо за каждый ответ

Я бы начал с учебника по реактивному маршрутизатору.

Max 13.02.2019 20:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
4 643
2

Ответы 2

Я думаю, вам нужно установить реакция-маршрутизатор-дом. Во-вторых, используйте строки шаблона.

Скорее всего, для этого вы будете использовать клиентский навигационный пакет, такой как React-маршрутизатор.

Чтобы настроить базовый маршрутизатор, вам необходимо определить маршруты и представления для этих маршрутов следующим образом, где свойство «путь» относится к желаемой конечной точке, а «компонент» — желаемое представление:

import React from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

const BasicExample = () => (
  <Router>
    <div>
     {/* Navigation menu */}
      <ul>
        <li>
          <Link to = "/">Home</Link>
        </li>
        <li>
          <Link to = "/about">About</Link>
        </li>
        <li>
          <Link to = "/topics">Topics</Link>
        </li>
      </ul>

      <hr />
      {/* Routes */}
      <Route exact path = "/" component = {Home} />
      <Route path = "/about" component = {About} />
      <Route path = "/topics" component = {Topics} />
    </div>
  </Router>
);

Эти маршруты также могут быть сгенерированы динамически с использованием массива маршрутов, таких как следующие (определенные в состоянии вашего компонента):

routes = [
  {
    path: "/",
    exact: true,
    component: Home
  },
  {
    path: "/bubblegum",
    component: () => <div>bubblegum!</div>,

  },
  {
    path: "/shoelaces",
   component: Shoelaces
  }

а затем визуализируется в React с помощью .map():

{this.state.routes.map(route => (
  <Route exact = {route.exact||false} path = {route.path} component = {route.component} />
))}

Другие вопросы по теме