Saya mencoba untuk mengkonversi komponen jQuery ke React.js dan salah satu hal yang saya mengalami kesulitan dengan rendering n sejumlah elemen berdasarkan for for loop.
Saya mengerti ini tidak mungkin, atau direkomendasikan dan bahwa di mana ada array dalam model itu masuk akal untuk digunakan map
. Tidak apa-apa, tetapi bagaimana dengan ketika Anda tidak memiliki array? Alih-alih Anda memiliki nilai numerik yang setara dengan sejumlah elemen yang diberikan untuk dirender, lalu apa yang harus Anda lakukan?
Inilah contoh saya, saya ingin awalan elemen dengan jumlah tag rentang yang sewenang-wenang berdasarkan tingkat hierarkisnya. Jadi pada level 3, saya ingin 3 tag rentang sebelum elemen teks.
Dalam javascript:
for (var i = 0; i < level; i++) {
$el.append('<span class="indent"></span>');
}
$el.append('Some text value');
Saya sepertinya tidak bisa mendapatkan ini, atau apa pun yang serupa dengan bekerja di komponen JSX React.js. Alih-alih saya harus melakukan yang berikut, pertama membangun array temp dengan panjang yang benar dan kemudian mengulang array.
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"
...
);
}
Tentunya ini bukan yang terbaik, atau satu-satunya cara untuk mencapai ini? Apa yang saya lewatkan?
sumber
Jawaban:
Diperbarui: Pada Bereaksi> 0,16
Metode rendering tidak harus mengembalikan elemen tunggal. Array juga dapat dikembalikan.
ATAU
Documents di sini menjelaskan tentang anak-anak BEJ
TUA:
Anda bisa menggunakan satu loop sebagai gantinya
Anda juga dapat menggunakan .map dan fancy es6
Juga, Anda harus membungkus nilai pengembalian dalam wadah. Saya menggunakan div dalam contoh di atas
Seperti yang dikatakan para dokter di sini
sumber
Berikut adalah contoh yang lebih fungsional dengan beberapa fitur ES6:
sumber
import React from "react"
danexport default Articles
for loop
array (atau objek) map'able untuk merender n jumlah item dalam komponen Bereaksi tanpa memiliki array item. Solusi Anda benar-benar mengabaikan fakta itu dan mengasumsikan telah melewati sejumlah artikel dari alat peraga.Saya menggunakan
Object.keys(chars).map(...)
untuk loop dalam rendersumber
chars && ...
dan.bind(this)
pada akhir fungsi saya. Saya ingin tahu mengapa hanyaObject...
(seterusnya dan seterusnya) tidak berhasil. Saya terus terdefinisi.Array.from()
mengambil objek yang dapat diubah untuk dikonversi ke array dan fungsi peta opsional. Anda bisa membuat objek dengan.length
properti sebagai berikut:sumber
Saya pikir ini adalah cara termudah untuk loop dalam bereaksi js
sumber