React material-пользовательский интерфейс для перехода на другую HTML-страницу и отображения начального компонента в ней

#javascript #reactjs #react-router #material-ui #react-router-dom

#javascript #reactjs #реагировать-маршрутизатор #материал-пользовательский интерфейс #react-router-dom

Вопрос:

Я разрабатываю веб-сайт с использованием material-ui (https://material-ui.com /). У меня есть панель инструментов с кнопками. Как обычно, я хочу перейти на другую HTML-страницу, когда нажимаю одну из кнопок и отображаю начальный компонент для новой HTML-страницы. Например, с «Главной страницы» (на данный момент, ее localhost: 3000/) на страницу «О программе» (localhost: 3000/About).

Я попробовал что-то похожее на это,

  import { Link } from 'react-router-dom';
    
    function ListItemLink(props) {
      const { icon, primary, to } = props;
    
      const CustomLink = props => <Link to={'/About'} {...props} />;
    
      return (
          <Button component={CustomLink} /> About              
      );
    }
  

https://github.com/mui-org/material-ui/issues/10955 но это не сработало. Я искал много других методов, но ни один из них не делает то, что я хочу. На рисунке ниже у меня есть папки «About» и «News» в общедоступной папке. У каждого из них есть свой собственный index.html файл. И у меня также есть ‘index.js ‘ в папке src.

По умолчанию запускается nmp index.html в папке «public» и выполните index.js для этого HTML-файла. Я хочу создать этот сценарий, когда я маршрутизирую другие папки нажатием кнопки.

введите описание изображения здесь

Есть ли какой-либо предпочтительный способ сделать это?

Спасибо.

Ответ №1:

Я рекомендую прочитать документацию для React Router.

https://reactrouter.com/web/guides/quick-start

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

Вам нужна эта настройка логики переключения, иначе ваши кнопки ничего не будут делать.

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

export default function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/users">Users</Link>
            </li>
          </ul>
        </nav>

        {/* A <Switch> looks through its children <Route>s and
            renders the first one that matches the current URL. */}
        <Switch>
          <Route path="/about">
            <About />
          </Route>
          <Route path="/users">
            <Users />
          </Route>
          <Route path="/">
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}