我通过一个for循环尝试在React JSX添加同一个组件(其中ObjectRow是一个单独的组件):
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
eslint提示了报错,但是我是新手,我不确定如何实现上述目标(多次添加组件)
我通过一个for循环尝试在React JSX添加同一个组件(其中ObjectRow是一个单独的组件):
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
eslint提示了报错,但是我是新手,我不确定如何实现上述目标(多次添加组件)
在 React 中,你不能直接在 JSX 中使用 for
循环。你需要将循环逻辑放在 JavaScript 代码块中,并将生成的元素存储在一个数组中,然后在 JSX 中渲染这个数组。
以下是如何在 React 中多次添加同一个组件的方法:
import React from 'react';
class MyComponent extends React.Component {
render() {
const numrows = 5; // 你可以根据需要更改这个值
const rows = [];
for (let i = 0; i < numrows; i++) {
rows.push(<ObjectRow key={i} />);
}
return (
<table>
<tbody>
{rows}
</tbody>
</table>
);
}
}
// 假设 ObjectRow 是你定义的另一个组件
function ObjectRow() {
return <tr><td>Row {Math.random()}</td></tr>;
}
export default MyComponent;
rows
来存储 <ObjectRow />
组件实例。for
循环,将多个 <ObjectRow />
实例推入数组中。key
属性:在每次调用 <ObjectRow />
时添加 key
属性。这是 React 识别每个组件实例的关键。{rows}
渲染数组中的所有组件。key
属性:在列表中渲染组件时,必须为每个子元素提供一个唯一的 key
属性。这有助于 React 优化渲染过程。key
:如果可能的话,最好使用唯一标识符作为 key
,而不是索引。索引作为 key
可能会导致问题,特别是在列表项重新排序或添加/删除时。希望这能帮助你实现你的目标!