Задать вопрос
@zjoin

Как сделать такую разметку на React.js?

050593da002649b28016adbbdec5fa77.png

Есть такой код, вроде все должно быть верно, но items не выводит. или есть более простой способ?

let footerColumns = [
   {
     name: "О компании",
     items: {
       route1: "sdf",
       route2: "sdfsdf"
     }
   },
   {
     name: "Потребителям",
     items: {
       route1: "sdf",
       route2: "sdfsdf",
       route3: "qwert"
     }
   }
]

class Footer extends React.Component {
    renderColumnItems(items) {
      console.log(items);
      return (
        <ul>
          {Object.keys(items).map((route) => {
            <li>
              <a href="#">
                {items[route]}
              </a>
            </li>
          })}
        </ul>
      );
}

    render() {
      return (
        <div>
          {footerColumns.map((column) => {
            return (
              <div className="column footer">
                <h3>{column.name}</h3>
                {this.renderColumnItems(column.items)}
              </div>
            );
          })}
        </div>
      );
    }
}
  • Вопрос задан
  • 702 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
alexfedoseev
@alexfedoseev
React & Rails Dev
const footerColumns = [
   {
     name: "О компании",
     items: {
       route1: "sdf",
       route2: "sdfsdf"
     }
   },
   {
     name: "Потребителям",
     items: {
       route1: "sdf",
       route2: "sdfsdf",
       route3: "qwert"
     }
   }
];

class Footer extends React.Component {
  
  constructor(props) {
    super(props);
  }
  
  
  _renderColumnItems(items) {
    
    // Если есть возможность изначально сделать `items` массивом,
    // то лучше сделать его массивом
    
    let itemsArray = [];
      
    for (let item in items) {
      if (items.hasOwnProperty(item)) {
        itemsArray.push({
          route: item,
          name : items[item]
        });
      }
    }
        
    return (
      <ul>
        {itemsArray.map(item => (
          <li>
            <a href="#">{item.name}</a>
          </li>
        ))}
      </ul>
    );
  }


  render() {
    
    const { columns } = this.props;
    
    return (
      <div>
        {columns.map(column => (
          <div className="column footer">
            <h3>{column.name}</h3>
            {this._renderColumnItems(column.items)}
          </div>
        ))}
      </div>
    );
  }
}

React.render(<Footer columns={footerColumns} />, document.getElementById('app'));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zjoin Автор вопроса
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы