Ako vytvoriť slučku a vykresliť prvky v React.js bez poľa objektov na mapovanie?
Snažím sa previesť komponent jQuery do React.js a jednou z vecí, s ktorými mám problémy, je vykresľovanie n počtu prvkov na základe cyklu for.
Chápem, že to nie je možné ani odporúčané a že tam, kde v modeli existuje pole, má zmysel použiť mapu
. To je v poriadku, ale čo keď pole nemáte? Namiesto toho máte číselnú hodnotu, ktorá sa rovná danému počtu prvkov na vykreslenie, čo potom máte urobiť?
Tu je môj príklad, chcem prefixovať prvok ľubovoľným počtom značiek span na základe jeho hierarchickej úrovne. Takže na úrovni 3 chcem 3 značky span pred textovým prvkom.
V javascripte:
for (var i = 0; i < level; i++) {
$el.append('<span class="indent"></span>');
}
$el.append('Some text value');
Zdá sa mi, že nemôžem dosiahnuť, aby toto alebo niečo podobné fungovalo v komponente JSX React.js. Namiesto toho som musel urobiť nasledovné, najprv vytvoriť dočasné pole na správnu dĺžku a potom toto pole zacykliť.
React.js
render: function() {
var tmp = [];
for (var i = 0; i < this.props.level; i++) {
tmp.push(i);
}
var indents = tmp.map(function (i) {
return (
<span className='indent'></span>
);
});
return (
...
{indents}
"Some text value"
...
);
}
Určite to nemôže'byť najlepší alebo jediný spôsob, ako to dosiahnuť? Čo mi uniká?
Aktualizované: Od verzie React > 0.16
Metóda Render nemusí nevyhnutne vracať jeden prvok. Môže sa vrátiť aj pole.
ALEBO
Dokumenty tu vysvetľujú o deťoch JSX
OLD:
Namiesto toho môžete použiť jednu slučku
Môžete tiež použiť .map a vymyslieť es6
Taktiež musíte návratovú hodnotu zabaliť do kontajnera. Vo vyššie uvedenom príklade som použil div
Ako sa uvádza v dokumentácii tu
Tu je funkčnejší príklad s niektorými funkciami ES6:
Používam
Object.keys(chars).map(...)
na vytvorenie slučky pri vykresľovaní