Вкладки динамического меню в ReactJS

#reactjs

#reactjs

Вопрос:

Я хочу добиться настройки пользовательского интерфейса следующим образом: (http://designrope.com/wp-content/uploads/2014/03/dashboard-ui-4.png )

То есть существует двойное меню — то, что слева, представляет собой меню типа динамической вкладки, в которое добавляется элемент, если после определенного события в приложении (например, пользователь что-то добавляет), а затем главное меню, которое упорядочивает и отображает информацию, связанную с каждой вкладкой. Вкладка меню также является съемной, поэтому, если происходит событие, которое удаляет информацию, связанную с конкретной вкладкой, вкладка меню исчезает.

Проведя исследование, я все еще не уверен, каков наилучший способ добиться этого в ReactJS?

Ответ №1:

Во-первых, вам нужны данные, которые представляют состояние приложения, например:

 const state = {
  activeAccount: 1,
  activeTab: "settings",
  accounts: [
    { name: "...", 
      type: "facebook", 
      buffer: { ... }, 
      analytics: { ... }, 
      schedule:  { ... },
      settings: { ... } },
    { name: "...", 
      type: "twitter", 
      buffer: { ... }, 
      analytics: { ... }, 
      schedule:  { ... },
      settings: { ... }},
    { name: "...", 
      type: "...", 
      buffer: { ... }, 
      analytics: { ... }, 
      schedule:  { ... },
      settings: { ... }}];
  

Затем организуйте свои компоненты таким же образом:

 const App = function({ accounts, activeAccount }) {
  return (
   <div className="app">
    <div className="accounts">
      {accounts.map(account => (
        <a href="#" onClick={...}>
          {account.name}
        </a>)}
    </div>
    <div className="tabs">
      {accounts[activeAccount].buffer amp;amp; (
        <a href="#" onClick={...}>Buffer</a>)}
      {accounts[activeAccount].analytics amp;amp; (
        <a href="#" onClick={...}>Analytics</a>)}
      {accounts[activeAccount].schedule amp;amp; (
        <a href="#" onClick={...}>Schedule</a>)}
      {accounts[activeAccount].settings amp;amp; (
        <a href="#" onClick={...}>Setting</a>)}
    </div>
    <div className="content">
      { ... some content based on active account and active tab ... }
    </div>
  </div>);

}
  

Я бы рекомендовал использовать react-router для управления состояниями активной учетной записи и вкладок.

Комментарии:

1. @AloeVeraForty Я не могу вспомнить ни одной библиотеки пользовательского интерфейса react, которая была бы похожа на ваше изображение. Я думаю, вы должны сами стилизовать компоненты с помощью CSS

2. Итак, в приведенном вами примере html-тег <a> будет заменен ссылкой из react-router, например <Link to= />. jsfiddle действительно поможет прояснить ситуацию..

3. Я знаю, что это старый пост, но вот очень хороший фреймворк пользовательского интерфейса для проектов React — Semantic UI ( react.semantic-ui.com )