jQueryコンポーネントをReact.jsに変換しようとしていますが、問題の1つはforループに基づいてn個の要素をレンダリングすることです。
これは不可能であるか、または推奨されておらず、モデルに配列が存在する場合、それを使用することは完全に理にかなっていることを理解していますmap
。それは問題ありませんが、配列がない場合はどうでしょうか?代わりに、レンダリングする要素の数に等しい数値がある場合、どうすればよいですか?
これが私の例です。階層レベルに基づいて、要素の前に任意の数のスパンタグを付けたいと思います。したがって、レベル3では、テキスト要素の前に3つのスパンタグが必要です。
JavaScriptでは:
for (var i = 0; i < level; i++) {
$el.append('<span class="indent"></span>');
}
$el.append('Some text value');
これ、またはJSX React.jsコンポーネントで動作するようなものを取得できないようです。代わりに、以下を実行する必要がありました。最初に一時配列を正しい長さに構築し、次に配列をループしました。
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"
...
);
}
確かに、これは最善の方法ではありませんか、またはこれを達成する唯一の方法ですか?何が欠けていますか?