P粉6098665332023-08-24 11:18:53
我不確定這是否適合您的情況,但通常地圖是一個很好的答案。
如果這是您使用 for 迴圈的程式碼:
<tbody> for (var i=0; i < objects.length; i++) { <ObjectRow obj={objects[i]} key={i}> } </tbody>
你可以用 map 這樣寫一>:
<tbody> {objects.map(function(object, i){ return <ObjectRow obj={object} key={i} />; })} </tbody>
ES6 語法:
<tbody> {objects.map((object, i) => <ObjectRow obj={object} key={i} />)} </tbody>
P粉9377693562023-08-24 11:13:18
將其想像為您只是呼叫 JavaScript 函數。您不能使用 for
迴圈來傳遞函數呼叫的參數:
return tbody( for (let i = 0; i < numrows; i++) { ObjectRow() } )
查看函數 tbody
如何作為參數傳遞給 for
迴圈 - 導致語法錯誤。
但是您可以建立一個數組,然後將其作為參數傳遞:
const rows = []; for (let i = 0; i < numrows; i++) { rows.push(ObjectRow()); } return tbody(rows);
使用 JSX 時,您基本上可以使用相同的結構:
const rows = []; for (let i = 0; i < numrows; i++) { // note: we are adding a key prop here to allow react to uniquely identify each // element in this array. see: https://reactjs.org/docs/lists-and-keys.html rows.push(<ObjectRow key={i} />); } return <tbody>{rows}</tbody>;
順便說一句,我的 JavaScript 範例幾乎與 JSX 範例所轉換的內容完全相同。試著使用 Babel REPL 來感受 JSX 的工作原理。