Создание html элементов в компоненте react.js

161
09 февраля 2019, 15:00

У меня есть компонент, в который через props приходит целое число (каждый раз разное). Вопрос, как создать несколько блоков у компоненте в зависимости от пришедшего числа (props.number === div.length), то есть от props.number зависит количество создаваемых блоков у компоненте. К примеру если бы у меня был массив вместо числа я бы использовал метод map. Ниже приведу псевдокод:

           return(
                <div>
                    {
                        array.map(item =>
                            <Component
                                  key   = {item.id}
                                  text  = {item.text}
                            />
                        )
                    }
                </div>
                 )
Answer 1

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

 createBlock = () => {
            let items = [];
            for(let i=0;i< this.props.blocks;i++){ //blocks - количество элементов
                items.push(<div className={'element'}></div>)
            }
            return items
        } //вызываем эту ф-ю в методе render()
Answer 2

Как вариант :

<div>
  {[...new Array(this.props.blocks)].map(() => (
    <Component />
  ))}
</div>
Answer 3

К примеру если бы у меня был массив вместо числа я бы использовал метод map

есть такая классная штука, как Array.from

/**
 * @type {{ id: number, text: string }} _item
 */
var _item;
/**
 * @type {_item[]}
 */
var _itemList;
_itemList = Array.from({ length: 5 }, (v, _i) => ({
  id: _i,
  text: `some test ${_i}`
}));
/**
 * @param {typeof _itemList} _itemList
 */
let CoDivList = _itemList => Array.from(_itemList, CoDiv);
/**
 * @param {{_itemList:typeof _itemList}} p
 */
let CoDivList2 = p =>
  Array.from(p._itemList, (v, i) => <CoDiv2 key={i} id={v.id} text={v.text} />);

READ ALSO
Долгий отклик сервера (Ubuntu+Apache+Nginx+Mysql+PHP)

Долгий отклик сервера (Ubuntu+Apache+Nginx+Mysql+PHP)

Столкнулся с проблемой - сервер выдачу делает 4,5 секунды

193
Незаполненные поля jinja2

Незаполненные поля jinja2

Вывожу данные в jinja2

183
Поиск картинок font awesome

Поиск картинок font awesome

Подскажите, можно ли как то автоматизировать процесс нахождения иконок? В макете много Font-awesomeИ очень долго получается вводить в font-awesome, то на чо похожа...

216
Переход по ссылке кликом по маркеру Google Maps

Переход по ссылке кликом по маркеру Google Maps

Вопрос, в принципе, ясен из названияЕсть карта Google Maps, есть нанесенные отметки

174