Как отображать один из нескольких компонентов, по выбору пользователя?

В React есть несколько способов отображать один из нескольких компонентов, в зависимости от выбора пользователя. Вот несколько подходов, которые вы можете использовать.

1. Условный рендеринг с использованием оператора if. Вы можете использовать оператор if внутри метода render вашего компонента, чтобы определить, какой компонент отображать. Например:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      selectedComponent: null
    };
  }

  handleSelection(componentName) {
    this.setState({ selectedComponent: componentName });
  }

  render() {
    const { selectedComponent } = this.state;

    if (selectedComponent === 'Component1') {
      return <Component1 />;
    } else if (selectedComponent === 'Component2') {
      return <Component2 />;
    } else if (selectedComponent === 'Component3') {
      return <Component3 />;
    }

    return (
      <div>
        <button onClick={() => this.handleSelection('Component1')}>Component 1</button>
        <button onClick={() => this.handleSelection('Component2')}>Component 2</button>
        <button onClick={() => this.handleSelection('Component3')}>Component 3</button>
      </div>
    );
  }
}

2. Вывод компонента на основе значения в состоянии. Вы можете использовать состояние вашего компонента для определения, какой компонент отображать. Например:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      selectedComponent: null
    };
  }

  handleSelection(componentName) {
    this.setState({ selectedComponent: componentName });
  }

  render() {
    const { selectedComponent } = this.state;

    return (
      <div>
        {selectedComponent === 'Component1' && <Component1 />}
        {selectedComponent === 'Component2' && <Component2 />}
        {selectedComponent === 'Component3' && <Component3 />}

        <button onClick={() => this.handleSelection('Component1')}>Component 1</button>
        <button onClick={() => this.handleSelection('Component2')}>Component 2</button>
        <button onClick={() => this.handleSelection('Component3')}>Component 3</button>
      </div>
    );
  }
}

3. Использование роутинга. Если ваши компоненты имеют отдельные пути URL, вы можете использовать библиотеку роутинга, такую как React Router, чтобы переключаться между компонентами на основе выбора пользователя. Например:

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

const App = () => {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/component1">Component 1</Link>
            </li>
            <li>
              <Link to="/component2">Component 2</Link>
            </li>
            <li>
              <Link to="/component3">Component 3</Link>
            </li>
          </ul>
        </nav>

        <Switch>
          <Route path="/component1">
            <Component1 />
          </Route>
          <Route path="/component2">
            <Component2 />
          </Route>
          <Route path="/component3">
            <Component3 />
          </Route>
        </Switch>
      </div>
    </Router>
  );
};

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