位置: 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图片放在哪里)

  • 签订土地使用权成交确认协议书
  • 未出资到位的股东
  • 公司费用计入什么科目
  • 横幅属于什么发票范围
  • 对公的etc怎么绑定怎么充值
  • 红字发票和蓝字一样吗
  • 附加税退税申请书怎么写
  • 小规模纳税人核算方式选什么
  • 什么叫调表不调帐
  • 未投入使用的道路
  • 企业取得该项资产时实际发生的支出
  • 服务费和佣金的关系
  • 联营和合营的区别
  • 补交印花税需要调账吗
  • 可供出售金融资产改为什么科目
  • 砂石建筑材料验收规范
  • 所得税汇算清缴调整项目
  • 对公账户每个月
  • 增值税开票金额在哪里看
  • 企业的不征税收入用于支出所形成的资产,其计算的折旧
  • 收回固定资产残值
  • 实验耗材发票内容怎么写
  • 收到的会费计入什么会计科目
  • 一般企业可以开检测费吗
  • 总分公司合并缴纳个税
  • 股东大会的召集有权
  • 厂区地面硬化的意义
  • 家里的无线网连着连着就断了
  • 不发工资先去劳动局投诉还是仲裁
  • 购入嵌入式软件能一次性扣除吗
  • php call方法
  • 电脑上的五角星是什么意思
  • 如何设置两台路由器连接
  • 补缴社保操作流程
  • WordPress导航菜单权限控制
  • 资产划转的账务处理
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • 最早的拍照手机是哪一年
  • 企业境外所得税额抵免限额应分国分项计算
  • phptime函数
  • 待抵扣进项税额借贷方向
  • 如何计算公司需增加的营运资金
  • 企业待报解预算收入的分录
  • 补收入账是什么意思
  • 会计常用单据样本大全
  • 企业补提以前年度未提的坏账准备
  • 负债总计是负数
  • 飞书slogan
  • pandas inner join
  • 发票系统技术维护费
  • 印花税的特点是
  • 纳税申报个税如何申报
  • 注会考试模拟机考
  • 多计提费用 怎么冲
  • 个体工商户要进行汇算清缴吗
  • 支付稿费怎么做凭证
  • 工会经费是不是税费
  • 出差补贴算工资吗
  • 红字的记账凭证怎么记账
  • 其他综合收益属于什么科目借贷
  • Sqlserver聚集索引和非聚集索引的区别
  • linux 的ll
  • usb3.0接口可以插优盘吗
  • mission controller
  • 怎么关闭windows登录密码
  • windows7粘滞键怎么关
  • win7怎么多分出一个盘
  • windows 10 mobile--移动版
  • linux系统怎么维护
  • mis.off c n
  • linux系统主要用途
  • linux bye
  • ReactNative 之FlatList使用及踩坑封装总结
  • python登录网站爬取数据
  • linux安装nodejs xz格式
  • linux中tar
  • jquery根据name
  • 办理税控盘的流程
  • 个人出租房屋如何计税?看这篇
  • 社保申报截止日期每月
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设