Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >react 列表渲染基础和技巧

react 列表渲染基础和技巧

作者头像
西南_张家辉
发布于 2021-02-02 02:00:13
发布于 2021-02-02 02:00:13
78300
代码可运行
举报
文章被收录于专栏:张家辉的树屋张家辉的树屋
运行总次数:0
代码可运行

说明

  • 适用于 react 初学者

react 列表渲染

  • 如果现在要把这个数组里面的数据渲染页面上要怎么做?开始之前要补充一个知识。之前说过 JSX 的表达式插入 {} 里面可以放任何数据,如果我们往 {} 里面放一个存放 JSX 元素的数组会怎么样?

使用 map 去渲染列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let icon = 'imgSrc';

const users = [
    { username: 'Alian wilison', userIcon: icon, id: 'a1' },
    { username: 'Awan killer', userIcon: icon, id: 'a2' }
];

// ---------------------
render(){
    {users.map(user => {
        return (
            <div key={user.id}>
                <img
                    src={user.userIcon}
                    alt="logo"
                    style={{
                        display: `block`,
                        width: `40px`,
                        marginRight: `15px`
                    }}
                />
                <p>{user.username}p>
            div>
        );
    })}
}
复制代码

当然你可以使用 for 循环和其他循环。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

render(){
    const usersElements = [] // 保存每个用户渲染以后 JSX 的数组
    for (let user of users) {
      usersElements.push( // 循环每个用户,构建 JSX,push 到数组中
        
          姓名:{user.username}

          照片:{user.userIcon}

          

) } return ( {usersElements} ) }

key 非常重要

  • 当我们需要改变 div 顺序的时候,我们都知道 react 的高效是依赖着 virtual-DOM 策略。如果我们能复用 dom 的话,尽量是不会去操作 DOM ,所以 react 使用 key 去标注这个元素。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>adiv>
<div>bdiv>
<div>cdiv>

// 改变一下位置

<div>adiv>
<div>cdiv>
<div>bdiv>
复制代码
  • 如果我们不使用 key 的时候,react 能正常渲染。不过我们看看 console
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div key='a'>adiv>
<div key='b'>bdiv>
<div key='c'>cdiv>

复制代码

我们可以看到

  • 每个渲染的列表必须要有 key ,一般在返回的 data 中使用 id 去赋值 key 值,因为这样 react 的虚拟 DOM 渲染的时候效率会高一些。 一般情况下,key 必须 unique。
  • 所以我们情况下,需要后台的接口数据带个 id 来作为 key,不过没有的话我们可以使用 index 来替代。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
class Index extends Component {
  render () {
    return (
      <div>
        {users.map((user, i) => <User key={i} user={user} />)}
      div>
    )
  }
}
...
复制代码

当你有使用接口的时候

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Index extends Component {
    //初始化一个 list 数组
    state = {
        list:[]
    }

     dataList = async () => {
            try {
                const param = { id };
                let response = await http.get(API.datalist(), param);
                
                // 把得到数据放进 state 中
                this.state.list.push(response);
                this.setState({
                    list: response
                });
            } catch (error) {
                alert(error);
            }
        };
    
    render(){
        // 取出数据
        const { list } = list;
        return (){
            {
                // 使用 map 遍历渲染数据
                list.map(value =>{
                    
                        value.name

                    

                })
            }
            
        }
    }
}
    
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
滴滴前端高频react面试题总结
当调用 setState时, React做的第一件事是将传递给setState的对象合并到组件的当前状态,这将启动一个称为和解( reconciliation)的过程。
flyzz177
2022/09/14
4.1K0
React基础
需要为遍历项指定一个不重复的key key 在 HTML 结构中是看不到的,是 React 内部用来进行性能优化时使用
P轴
2022/11/18
1.7K0
React基础
虚拟 DOM 到底是什么?(长文建议收藏)
虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex)。因为很多人是在学习 React 的过程中接触到的虚拟 DOM ,所以为先入为主,认为虚拟 DOM 和 JSX 密不可分。其实不然,虚拟 DOM 和 JSX 固然契合,但 JSX 只是虚拟 DOM 的充分不必要条件,Vue 即使使用模版,也能把虚拟 DOM 玩得风生水起,同时也有很多人通过 babel 在 Vue 中使用 JSX。
桃翁
2019/07/08
4.4K0
虚拟 DOM 到底是什么?(长文建议收藏)
一道React面试题把我整懵了
提问:react项目中的JSX里,onChange={this.func.bind(this)}的写法,为什么要比非bind的func = () => {}的写法效率高?
beifeng1996
2022/09/30
1.3K0
React入门六: 组件基础练习
代码优化: this.state.comments出现多次。声明个变量接收它
用户4793865
2023/01/12
3830
从Preact中了解React组件和hooks基本原理
React 的代码库现在已经比较庞大了,加上 v16 的 Fiber 重构,初学者很容易陷入细节的汪洋大海,搞懂了会让人觉得自己很牛逼,搞不懂很容易让人失去信心, 怀疑自己是否应该继续搞前端。那么尝试在本文这里找回一点自信吧(高手绕路).
Nealyang
2019/11/07
1K0
一天梳理完React所有面试考察知识点
在shouldComponentUpdate()判断中,有一个有意思的问题,解释为什么 React setState() 要用不可变值
beifeng1996
2022/10/06
2.9K0
实现一个小而全的React
我们需要一个可以转换 jsx 的 vanilla js 环境,使用 vite 可以很方便设置好我们的开发环境
玖柒的小窝
2021/10/06
5430
实现一个小而全的React
手写系列-实现一个铂金段位的React
为什么是铂金呢,因为和王者还有很远的距离。本文仅实现简单版本的 React,参考 React 16.8 的基本功能,包括虚拟 DOM、Fiber、Diff 算法、函数式组件、hooks 等。
winty
2021/07/27
8970
React基础入门知识记录
何处锦绣不灰堆
2023/10/18
2110
React---消息订阅发布机制
2) PubSub.subscribe('delete', function(data){ }); //订阅
半指温柔乐
2021/04/26
8090
React App 性能优化总结
在 React 内部,React 会使用几项巧妙的小技术,来优化计算更新 UI 时,所需要的最少的更新 DOM 的操作。在大多数情况下,即使你没有针对性能进行专项优化,React 依然很快,但是仍有一些方法可以加速 React 应用程序。本文将介绍一些可用于改进 React 代码的有效技巧。
前端迷
2019/07/19
7.9K0
React实现的github搜索小案例
​ 效果 ​ ​ 代码 ​ index.js //引入react核心库 import React from "react"; //引入ReactDOM import ReactDOM from "react-dom"; //引入App import App from "./App"; ReactDOM.render(<App />, document.getElementById("root")); App.jsx import React, { Component } from "re
henu_Newxc03
2021/12/26
7030
React基础(3)-不可不知的JSX
以上问题即使自己很清楚,但是否有时却总是道不清,说不明?那么读完本文,就豁然开朗了
itclanCoder
2019/09/16
2K0
React基础(3)-不可不知的JSX
React学习笔记(四)—— 组件通信与状态管理、Hooks、Redux、Mobe
2、利用Redux进行状态管理,这种方式的配套工具比较齐全,可以自定义各种中间件;
张果
2023/03/24
5.2K0
React学习笔记(四)—— 组件通信与状态管理、Hooks、Redux、Mobe
React 开发要知道的 34 个技巧
原理:子组件里面利用 props 获取父组件方法直接调用,从而改变父组件的值 注意: 此方法和 props 大同小异,都是 props 的应用,所以在源码中没有举例
前端老王
2020/09/23
1.6K0
react面试题详解
当请求 /users/:id 被重定向去 '/users/profile/:id':
beifeng1996
2022/11/18
1.5K0
【React】归纳篇(九)组件间通信的3中方式之props与订阅发布机制 | subscribe | publish | 改写前面练习
前端修罗场
2023/10/07
3200
React 状态、事件与动态渲染
例子中使用map方法将每个元素的值*2,最后得到的数组为:[2, 4, 6, 8, 10]。在React中,处理组件数组的方式与之类似。
随风溜达的向日葵
2018/07/31
1.6K0
React---发送Ajax请求
const {a} = obj; //传统解构赋值
半指温柔乐
2021/04/25
2.1K0
相关推荐
滴滴前端高频react面试题总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验