J'utilise React/JSX dans mon application afin d'accomplir ce que je veux aussi, Lodash.
Je dois répéter un élément un certain nombre de fois en fonction d'une condition, comment dois-je faire?
Voici l'élément:
<span className="busterCards">♦</span>;
Et je l'attribue comme ceci:
let card;
if (data.hand === '8 or more cards') {
card = <span className="busterCards">♦</span>;
}
Donc dans ce cas, je dois répéter l'élément 8 fois. Quel devrait être le processus utilisant Lodash?
Voici:
let card = [];
_.times(8, () => {
card.Push(<span className="busterCards">♦</span>);
});
Vous voudrez peut-être ajouter une clé à chaque élément span
pour que React ne se plaigne pas de manquer l'attribut key:
let card = [];
_.times(8, (i) => {
card.Push(<span className="busterCards" key={i}>♦</span>);
});
Pour plus d'informations sur .times
, reportez-vous ici: https://lodash.com/docs#times
Le moyen le plus court de le faire sans aucune bibliothèque externe:
const n = 8; // Or something else
[...Array(n)].map((e, i) => <span className="busterCards" key={i}>♦</span>)
solution sans lodash ou syntaxe de propagation ES6:
Array.apply(null, { length: 10 }).map((e, i) => (
<span className="busterCards" key={i}>
♦
</span>
));
Vous pouvez le faire comme ça (sans 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>);
}
}
En utilisant _.times
: https://jsfiddle.net/v1baqwxv/
var Cards = React.createClass({
render() {
return <div>cards {
_.times( this.props.count, () => <span>♦</span> )
}</div>;
}
});