如何在 React 中实现组件循环
介绍
React 允许您轻松地在组件内编写 JavaScript 代码。这使得任何开发人员都可以轻松地处理 React 中的常见编程技术,例如循环遍历一组项目、创建和调用函数、将数据存储在局部变量中等等。
本指南演示了如何在常见用例中实现循环,例如呈现静态数据列表和从 API 输出数据。
在 JSX 中输出数组
组件循环是常规 JavaScript 循环与一些 JSX 的组合。JSX 的一大特色是它允许你直接在 DOM 上输出数组。这意味着如果你有一个名为data 的数组,你可以在 DOM 上输出它的元素,如下所示:
return(
<>
{data}
</>
)
因此,您可以将数据及其支持的 HTML 推送到数组中,然后在组件的返回语句中用花括号括起来输出该数组。您可以使用几个 JavaScript 循环来实现此目的。由于map()是最流行且最简单的,因此本指南在示例中广泛使用它。
渲染静态数据
考虑一个简单的用例,您必须在 DOM 上呈现项目列表。
import React from 'react';
import './App.css';
function App() {
return (
<>
<h2>This is a simple list of items</h2>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
</>
);
}
export default App;
当然,渲染每个<li>会很麻烦且耗时,如上所示。最佳做法是分解代码的重复段并将其放入数组中。例如,每个<li>标签都可以看作一个重复段,因此您可以创建一个包含以下数据的数组:
let items=['Item 1','Item 2','Item 3','Item 4','Item 5'];
最后,输出该数组为:
<ul>
{items.map((item,index)=>{
return <li key={index}>{item}</li>
})}
</ul>
此外,您可以通过将整个 HTML 推送到数组中来清理 JSX:
let itemList=items.map((item,index)=>{
return <li key={index}>{item}</li>
})
然后渲染该单个数组。
function App() {
return (
<>
<h2>This is a simple list of items</h2>
<ul>
{itemList}
</ul>
</>
);
}
或者,可以使用forEach()方法执行相同的操作,如下所示。
import React from 'react';
import './App.css';
let items=['Item 1','Item 2','Item 3','Item 4','Item 5'];
let itemList=[];
items.forEach((item,index)=>{
itemList.push( <li key={index}>{item}</li>)
})
function App() {
return (
<>
<h2>This is a simple list of items</h2>
<ul>
{itemList}
</ul>
</>
);
}
export default App;
您可以使用常规 for 循环尝试上述方法,其效果相同。随着组件规模的扩大,将代码与 UI 分开可以使组件更简洁、模块化、可读性更强,因此也更易于调试。
渲染动态数据
在另一个实际场景中,您通常会从后端获取数据,并将其存储在组件的状态中,然后循环遍历该数据以在页面上输出该数据。假设您想为您的 Web 应用获取用户列表。
导入useState并创建一个简单的状态变量来保存对象数组。
import React,{useState} from 'react';
import './App.css';
function App() {
const [userData,setUserData]=useState([])
</>
);
}
export default App;
要进行 API 调用,请在根目录中运行以下命令来安装axios :
npm install axios
由于页面需要在前端请求时立即完全加载数据,因此必须在组件首次挂载到 DOM 上时填充数据。这可以通过使用生命周期钩子useEffect()通过将空数组作为第二个参数传递来完成。
useEffect(()=>{
//make an API call when component first mounts
},[])
接下来,使用来自服务器的数据填充状态。
useEffect(()=>{
axios.get('https://reqres.in/api/users?page=2')
.then(res=>{
console.log(res.data.data);
setUserData(res.data.data)
})
.catch(err=>{
console.log(err);
})
},[])
使用map()循环遍历数据并将其显示在页面上。
return (
<>
{userData.map((data,id)=>{
return <div key={id}>
<h2>{data.first_name} {data.last_name}</h2>
<p>{data.email}</p>
</div>
})}
</>
);
}
最后,将逻辑从模板中分离出来。
const users=userData.map((data,id)=>{
return <div key={id}>
<h2>{data.first_name} {data.last_name}</h2>
<p>{data.email}</p>
</div>
})
return (
<>
{users}
</>
);
}
结论
使用组件循环输出和操作数据是 React 中的一种常见开发方法。它允许您将具有动态数据的 HTML 元素组合在一起,如本指南所示。在没有 DOM 查询的纯 JavaScript 应用中,这通常是不可能做到的。您应该使用组件循环以干净、高效且易读的方式输出项目集。
了解更多
探索 Pluralsight 的这些 React 课程以继续学习:
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~