首页 > 其他分享 >React学习笔记12-循环渲染

React学习笔记12-循环渲染

时间:2023-10-20 11:46:29浏览次数:46  
标签:map 12 dom 渲染 list React item state key

在vue中我们一般是通过v-for指令来进行循环渲染的,但react中没有封装相关指令供我们调用

在react中我们可以通过数组的map方法来进行数据的循环渲染

import React, { Component } from 'react'

export default class App extends Component {
    constructor() {
        super()
        this.state = {
            list: [
                '1111',
                '2222',
                '3333'
            ]
        }
    }
    render() {
        return (
            <div>
                <ul>
                    {this.state.list.map((item, index) =>
                        <li key={index}>{item}</li>
                    )}
                </ul>
                <button onClick={
                    () => {
                        this.state.list.push('4444')
                        this.setState({
                            list: this.state.list
                        })
                    }
                }>add</button>
            </div>
        )
    }
}
/* 
    为了列表的复用和重排,设置key值提高性能
    理想key,不重复的id
*/
/* 
     原生JS-map
*/

var list = ["aa", "bb", "cc"]

var newlist = list.map(item =>
    `<li>${item}</li>`
)
console.log(newlist)

为了实现列表的复用和重排的效率我们需要给每一个循环渲染出来的dom设置一个唯一标识key

在虚拟dom进行对比时可以通过这个key直接让key相同的dom进行比较实现每个dom点对点的对比,而不需要进行双层循环。

让每个dom都跟所有的dom进行对比。提高了虚拟dom更新的速度

标签:map,12,dom,渲染,list,React,item,state,key
From: https://www.cnblogs.com/SadicZhou/p/17776687.html

相关文章

  • React学习笔记11-状态(state)
    状态就是组件的数据,由组件自己设置和更改,也就是说由组件自己维护,使用状态的目的就是为了在不同的状态下使组件的显示不同(自己管理) 定义状态的方法 可以在构造函数中定义也可以直接在类中通过变量的形式来定义/*eslint-disableeqeqeq*/importReact,{Component}f......
  • React学习笔记10- Ref的应用
    用法1.给标签设置ref="username"通过这个获取this.refs.username,ref可以获取到应用的真实dom2.给组件设置ref="username"通过这个获取this.refs.username,ref可以获取到组件对象 写法importReact,{Component}from'react'exportdefaultclassAppextendsC......
  • React学习笔记09- 事件处理
    React采用on+事件名的方式来绑定一个事件,注意,这里和原生的事件是有区别的,原生的事件全是小写onclick,React里的事件是驼峰onClick,React的事件并不是原生事件,而是合成事件。 事件回调的几种写法1.直接在组件内定义一个非箭头函数的方法,然后在render里直接使用onClick={......
  • 态路小课堂丨400G QSFP112—助力IDC数据中心升级
    TARLUZ态路来源网络随着IDC数据中心不断的发展,光模块向着更高速率、更小的尺寸和更低损耗不断升级,以适应不同使用场景。光模块一般采用提高单通道比特速率、增加通道数或改变调制方式来实现光模块的速率升级。如上图所示,400G光模块有56GPAM4和112GPAM4两种调制方案,本文态路为您介......
  • 安装arm银河麒麟及Qt5.12.1
    一、安装银河麒麟虚拟机:qemu虚拟机安装银河麒麟V10arm架构系统桌面版_陆星材的博客-CSDN博客安装完(试用版)之后,点击桌面的“安装Kylin”图标,安装银河麒麟系统。将命令后面的“,drive=cdrom”删掉。执行即可打开麒麟系统。二、编译Qt5.12.1源码:教程1银河麒麟V10+飞腾CPU......
  • [刷题笔记] [算法学习笔记]树上差分 -- Luogu P3128
    DescriptionProblem:https://www.luogu.com.cn/problem/P3128FJ给他的牛棚的\(N\)个隔间之间安装了\(N-1\)根管道,隔间编号从\(1\)到\(N\)。所有隔间都被管道连通了。FJ有\(K\)条运输牛奶的路线,第\(i\)条路线从隔间\(s_i\)运输到隔间\(t_i\)。一条运输路线会给......
  • 2023-2024-1 20231312 《计算机与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程<班级的链接>2023-2024-1-计算机基础与程序设计|-这个作业要求在哪里<作业要求链接>2023-2024-1计算机基础与程序设计第四周作业|这个作业的目标《计算机基础概论》第4,5章《C语言程序设计》第3章|作业正文作业链接教材学......
  • AMD线程撕裂者7000实拍图赏:1+12和你从未见过的1+8
    盼望着,盼望着,AMDZen4架构的新一代线程撕裂者7000系列终于来了!这一次,AMD提供了两种选择:一是面向顶级工作站的线程撕裂者PRO7000WX系列,满血状态,最多96核心192线程、480MB缓存、8通道DDR5内存、128条PCIe5.0通道。二是面向桌面发烧友的线程撕裂者7000X系列,最多64核心128线程、3......
  • LeetCode121 买卖股票的最佳时机
    题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能......
  • react native 退出登录后清空路由栈并返回登录页
    背景:由于项目使用的expo-router,一开始时在退出登录是如下实现的:import{router}from"expo-router";...router.replace("/my/login/login");...使用expo-router的router.replace方法跳转至登录页。结果发现虽然跳转成功,但是点击手机返回操作时,虽然上一个页面没有了......