Как повторить элемент n раз с помощью JSX
Я использую React / JSX в своем приложении, чтобы выполнить то, что я хочу, также, Lodash.
мне нужно повторить элемент определенное количество раз в зависимости от состояния, как я должен это делать?
вот элемент:
<span className="busterCards">♦</span>;
и я назначаю его так:
let card;
if (data.hand === '8 or more cards') {
card = <span className="busterCards">♦</span>;
}
поэтому в этом случае мне нужно повторить элемент 8 раз. Каким должен быть процесс с использованием Lodash?
5 ответов
здесь вы идете:
let card = [];
_.times(8, () => {
card.push(<span className="busterCards">♦</span>);
});
вы можете добавить ключ к каждому span
элемент so React не будет жаловаться на отсутствие ключевого атрибута:
let card = [];
_.times(8, (i) => {
card.push(<span className="busterCards" key={i}>♦</span>);
});
подробнее о .times
смотрите здесь: https://lodash.com/docs#times
самый короткий способ сделать это без каких-либо внешних библиотек:
const n = 8; // Or something else
[...Array(n)].map((e, i) => <span className="busterCards" key={i}>♦</span>)
решение без синтаксиса распространения lodash или ES6:
Array.apply(null, { length: 10 }).map((e, i) => (
<span className="busterCards" key={i}>
♦
</span>
));
вы можете сделать это так (без lodash):
var numberOfCards = 8; // or more.
if (data.hand >= numberOfCards) {
var cards = [];
for (var i = 0; i < numberOfCards; i++) {
cards[i] = (<span className="busterCards">♦</span>);
}
}
используя _.times
: https://jsfiddle.net/v1baqwxv/
var Cards = React.createClass({
render() {
return <div>cards {
_.times( this.props.count, () => <span>♦</span> )
}</div>;
}
});