位置: IT常识 - 正文

React基础-JSX语法列表渲染详解(react js 教程)

编辑:rootadmin
React基础-JSX语法列表渲染详解 React列表渲染

推荐整理分享React基础-JSX语法列表渲染详解(react js 教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react用法总结,react详解,react 语法,react.js教程,react基础入门,react的语法,js react,react用法总结,内容如对您有帮助,希望把文章链接给更多的朋友!

真实开发中我们会从服务器请求到大量的数据,数据会以列表的形式存储:

比如歌曲、歌手、排行榜列表的数据;

比如商品、购物车、评论列表的数据;

比如好友消息、动态、联系人列表的数据;

在React中并没有像Vue模块语法中的v-for指令,而且需要我们通过JavaScript代码的方式组织数据,转成JSX:

很多从Vue转型到React的小伙伴非常不习惯,认为Vue的方式更加的简洁明了;

React基础-JSX语法列表渲染详解(react js 教程)

但是React中的JSX正是因为和JavaScript无缝的衔接,让它可以更加的灵活;

另外我经常会提到React是真正可以提高我们编写代码能力的一种方式;

如何展示列表呢?

在React中,展示列表最多的方式就是使用数组的map高阶函数;

class App extends React.Component { constructor() { super() this.state = { students: [ {name: "aaa", age: 18, score: 99, id: 101}, {name: "bbb", age: 19, score: 88, id: 102}, {name: "ccc", age: 17, score: 77, id: 103}, {name: "ddd", age: 17, score: 98, id: 104} ] } } render() { const { students } = this.state return ( <div> { students.map(stu => { return( <div key={stu.id}> <h3>学号: {stu.name}</h3> <h3>年龄: {stu.age}</h3> <h3>成绩: {stu.score}</h3> </div> ) }) } </div> ) }}const app = ReactDOM.createRoot(document.querySelector("#app"))app.render(<App/>)

很多时候我们在展示一个数组中的数据之前,需要先对它进行一些处理:

比如过滤掉一些内容:filter函数; 例如上面代码中, 要求展示学生分数大于80的

class App extends React.Component { constructor() { super() this.state = { students: [ {name: "aaa", age: 18, score: 99, id: 101}, {name: "bbb", age: 19, score: 88, id: 102}, {name: "ccc", age: 17, score: 77, id: 103}, {name: "ddd", age: 17, score: 98, id: 104} ] } } render() { const { students } = this.state // 对数组过滤再遍历 const filterStudents = students.filter(item => { return item.score > 80 }) return ( <div> { filterStudents.map(stu => { return( <div key={stu.id}> <h3>学号: {stu.name}</h3> <h3>年龄: {stu.age}</h3> <h3>成绩: {stu.score}</h3> </div> ) }) } </div> ) }}const app = ReactDOM.createRoot(document.querySelector("#app"))app.render(<App/>)

比如截取数组中的一部分内容:slice函数, 例如上面代码中, 要求截取数组的前两条进行展示

class App extends React.Component { constructor() { super() this.state = { students: [ {name: "aaa", age: 18, score: 99, id: 101}, {name: "bbb", age: 19, score: 88, id: 102}, {name: "ccc", age: 17, score: 77, id: 103}, {name: "ddd", age: 17, score: 98, id: 104} ] } } render() { const { students } = this.state // 对数组截取再遍历 const spliceStudents = students.splice(0,2) return ( <div> { spliceStudents.map(stu => { return( <div key={stu.id}> <h3>学号: {stu.name}</h3> <h3>年龄: {stu.age}</h3> <h3>成绩: {stu.score}</h3> </div> ) }) } </div> ) }}const app = ReactDOM.createRoot(document.querySelector("#app"))app.render(<App/>)

上面的操作先过滤, 再截取, 最后进行遍历, 其实可以通过链式调用一行代码完成

class App extends React.Component { constructor() { super() this.state = { students: [ {name: "aaa", age: 18, score: 99, id: 101}, {name: "bbb", age: 19, score: 88, id: 102}, {name: "ccc", age: 17, score: 77, id: 103}, {name: "ccc", age: 17, score: 77, id: 103}, {name: "ddd", age: 17, score: 98, id: 104} ] } } render() { const { students } = this.state return ( <div> {/* 链式调用, 一步操作完成 */} { students.filter(item => item.score > 80).splice(0, 2).map(stu => { return( <div key={stu.id}> <h3>学号: {stu.name}</h3> <h3>年龄: {stu.age}</h3> <h3>成绩: {stu.score}</h3> </div> ) }) } </div> ) } } const app = ReactDOM.createRoot(document.querySelector("#app")) app.render(<App/>)

我们会发现在前面的代码中如果没有绑定key就会会报一个警告, 这个警告是告诉我们需要在列表展示的jsx中添加一个key

key主要的作用是为了提高diff算法时的效率;

本文链接地址:https://www.jiuchutong.com/zhishi/298709.html 转载请保留说明!

上一篇:Vite4 + Vue3 + vue-router4 动态路由

下一篇:Vue显示图片的几种方式(vue图片放在哪里)

  • 外购产品视同自产产品办理免抵退税的条件?
  • 一般纳税人附加税优惠政策2023
  • 物业公司代收电费怎么开票
  • 固定资产的折余价值计算公式
  • 融资租赁本金和租金的区别
  • 开具银行资信证明
  • 代开增值税票普票专票税点一样吗
  • 企业之间借款利息进项税可以抵扣吗
  • 派发现金红利分录
  • 计算错误多缴税怎么处理
  • 货车压线行驶怎么处罚
  • 外资企业股权转让所得税率
  • 个人股东转让股权印花税税率
  • 跨年度冲减收入
  • 异地缴纳个人所得税
  • 工程所在地预缴税款可以退回吗
  • 增值税附表三怎么填 举例说明
  • 以旧换新的销售方式怎样确定销售额
  • 新成立公司必须报税么
  • 不是公户付的款开发票可以做账吗
  • 往来款核销需要如何确认
  • 工会账户销户
  • win7防火墙设置不了
  • linux系统配置ip地址命令
  • 购买货车预付保险怎么算
  • 猜单词游戏代码
  • 地方水利建设基金
  • mac怎么设置默认程序
  • 怎么将电脑硬盘做成移动硬盘
  • 共管账户和监管账户是一样的吗知乎
  • php insert into
  • php获取本机ip地址
  • 劳动仲裁的调解款要扣税吗
  • 计算机还热门吗
  • uni.getstorage
  • 数学建模赋权
  • php数组降序排列
  • 生产车间领用工具
  • 融资租赁固定资产不属于筹资活动
  • 保险外币业务
  • python中函数的用法
  • mongodb中的objectid
  • 应收账款红冲什么意思
  • 税控盘每年要交年费吗
  • 出库单可以自制吗
  • 印花税减免优惠政策2019
  • sqlserver2005没有实例
  • 深入理解计算机系统
  • 城市基础设施配套费征收管理规定
  • 以红字冲回
  • 项目独立性
  • 银行支付结算管理办法
  • 期末库存商品结转分录
  • 城市生活垃圾处理方式有哪几种
  • 可以抵扣的增值税进项税额
  • 网上打印的电子机票可以报销不
  • 案例分析收到了哪些安全启示
  • 稽查人员是干嘛的
  • sql,join
  • mysql配置怎么调出来
  • fedora os
  • ubuntu系统安装程序
  • linux 应用程序
  • linux 安装jmap
  • 修改注册表优化Win10
  • onionwormimmune.exe是什么
  • win7e盘不见了怎么恢复
  • win8隐藏的文件夹怎么找出来
  • 利用python-Flask框架搭建本地数据可视化网站 原创
  • js 单引号
  • javascript实现2048游戏示例
  • html常用字符
  • nodejs接收form表单
  • jquery的实现原理
  • 开票物品名称要求
  • 广东发票查询真伪网站
  • 出租车开的发票如何查询校验码?
  • 车辆购置税怎样做账
  • 北京电子税务局实名认证
  • 临沂市2020年居民燃气价格
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设