踩坑之react生命周期

2023-05-16

问题情景

创建组件tableCom,用来渲染表格,实质还是使用antd里的table,但是重新包装一下是为了columns和dataSource通过外部数据传入。

<TableCom columns={ columns } tableInfo={ tableInfo }/>

tableInfo是后端返回的数据,类似于像这样的数据类型

data = [
    { name: '111',age: 1 },
    { name: '222',age: 2 }
];

但是表格的最后一列必须是一个操作栏,所以就必须在columns里添加操作的这一列,然后在render里写具体那一列渲染的是什么。

因为columns是通过外部文件引入的一个数据对象,所以需要在react文件引用这个组件前给columns数组push进去一个这样的数据。

    {
        title: '操作',
        key: 'option',
        dataIndex: 'option',
        width: '100px',
        render: () => <a href="#">查看详情</a>
    };

所以我这样做了

render() {
        const newCol = {
            title: '操作',
            key: 'option',
            dataIndex: 'option',
            width: '100px',
            render: () => <a href="#">查看详情</a>
        };
        columns.push(newCol);
        return (
            <div>
                <TableCom columns={ columns } tableInfo={ tableInfo }/>
            </div>
        );
   }

然而效果却是这样的

这里写图片描述

出现了两列操作列

后来我通过打断点发现了问题在哪

首先对于react来说它的生命周期一开始肯定是这样的过程componentWillMount->render->componentDidMount。那么就是说页面开始就执行了render方法,已经给columns数组push过yici了,接着componentDidMount执行完后获取了后端数据然后改变了传到组件里的props,所以要执行componentWillReceiveProps这个周期函数,之后再执行render方法,等于又push了一遍,所以出现了两列的情况。

render() {
        const newCol = {
            title: '操作',
            key: 'option',
            dataIndex: 'option',
            width: '100px',
            render: () => <a href="#">查看详情</a>
        };
        let newArr = [];
        for(let i = 0;i < columns.length; i++){
            newArr.push(columns[i]);
        }
        newArr.push(newCol);
        return (
            <div>
                <TableCom columns={ columns } tableInfo={ tableInfo }/>
            </div>
        );
   }

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

踩坑之react生命周期 的相关文章

  • Spring Security 实现身份认证

    Spring Security可以运行在不同的身份认证环境中 xff0c 当我们推荐用户使用Spring Security进行身份认证但并不推荐集成到容器管理的身份认证中时 xff0c 但当你集成到自己的身份认证系统时 xff0c 它依然是
  • Spring Security身份认证之UserDetailsService

    zhiqian我们采用了配置文件的方式从数据库中读取用户进行登录 虽然该方式的灵活性相较于静态账号密码的方式灵活了许多 xff0c 但是将数据库的结构暴露在明显的位置上 xff0c 绝对不是一个明智的做法 本文通过Java代码实现UserD
  • 基于Apache OLTU的OAuth2.0授权解决方案

    Apache OLTU实现了OAuth 2 0的规范 xff0c 是一种可靠的Java授权解决方案 但是 xff0c 官方文档实在是太惨不忍睹了 本文参考了开涛的 OAuth 2 0集成Shiro文章 模拟了OAuth2 0的认证流程 技术
  • Couch的MapReduce查询

    1 MapReduce介绍 传统的关系型数据库中 xff0c 只要你的数据是结构化的 xff0c 你可以进行任何类型的查询 Apache Couch与此相反 xff0c 它使用MapReduce xff08 预定义的map和的reduce方
  • Java遍历读取文件目录结构

    Java读取计算机目录 xff0c 并打印 public class ReadDirectory 文件所在的层数 private int fileLevel 生成输出格式 64 param name 输出的文件名或目录名 64 param
  • Java实现数字水印

    数字水印有可见不可见之分 xff0c 可见的比如课件上印有学校校徽 xff0c 微博发图片会水印上上传者的信息及微博logo等 用java实现可见的数字水印 xff0c 草人主要是用到了java awt包中的AlphaComposite类
  • 程序员应该如何去设计需求

    刚出道的程序员 xff0c 在做需求分析的时候 xff0c 总是经常挨批 xff0c 客户说他们不能按照客户的要求去设计原型 xff0c 领导说他们不用心去与客户沟通交流 程序员总是感到自己很冤枉 xff0c 明明客户没有给出一点建设性建议
  • Android硬件开发之——使用Android Beam传输文本

    前言 本文主要讲述使用Android Beam传输文本 xff0c 内容包含 xff1a Android Beam的基本理念Android Beam API实例 Android Beam Android Beam的基本理念 Android
  • 小小程序员的一周日报

    工作依旧在有条不紊的进行着 xff0c 一周的时间很快就会过去 xff0c 正如今天李哥所说的 xff0c 这一周还没有感觉怎么过呢 xff0c 就结束了 是啊 xff0c 这就是我们的工作 xff0c 程序员的工作 xff0c 软件设计师
  • 项目空间都有啥

    项目空间是什么 xff0c Workplace 答案是 xff1a No 项目空间是由项目负责人提出的实施某项目方案的一种流程 项目空间是XX海油ERP管理系统下的一个业务 xff0c 项目负责人通过创建项目名称 项目负责人 使用资源 所属
  • 你不要瞧不起Ctrl+C

    曾经 xff0c 在我未参加工作之前 xff0c 我认为靠 Ctrl 43 C 来完成工作的人 xff0c 肯定是懒惰的程序员 xff0c 但是现在我发现我错了 xff0c 而且是彻底的错了 能够通过 Ctrl 43 C 来完成工作的人 x
  • 文档交接说明书(模板)

    因为同事的离职 xff0c 我的入职 xff0c 要从同事手中交接过来一些项目 公司里只有一些开发文档相关的模板 xff0c 并没有文档交接相关的模板 xff0c 所以交接文档的模板也就由我们自己来定 我结合自己在工作中的经验 xff0c
  • Java如何打印输出九九乘法表

    Java如何打印输出九九乘法表 打印乘法表的方法 1 使用双重for循环打印九九乘法表 2 使用do while 实现打印九九乘法表 双重for循环的使用 打印结果如图示 xff1a Java程序源代码如下 xff1a span class
  • 服务器出现大量 TIME_WAIT,如何解决

    经常在服务器发现一些连接出现 TIME WAIT 状态 xff0c 那么为什么会有 TIME WAIT状态 xff0c 它是如何产生的 xff1f 大量的 TIME WAIT 有什么危害 xff1f 如何排查 xff1f 如何优化 xff1
  • 【Mariadb/Mysql】利用JSON函数巧妙实现行列置换提高系统效率

    在现实生活中 xff0c 往往我们需要创建一些One to Many或Many to Many的关系数据表 例如 xff1a 按照Configuration Solution的设计 xff0c 产品与产品参数表的关系 xff0c 往往一种产
  • msvcp120.dll丢失的最新解决方法

    下载msvcp120 dll打开浏览器后在顶部输入 dll修复程序 site 按下电脑键盘的回车键打开下载msvcp120 dll系统文件 msvcp120 dll文件下载完成点击解压安装包 然后右键打开修复安装包文件电脑提示找不到msvc
  • VirtualBox Windows下开机自启动

    背景 我们本地使用Virtualbox虚拟机的时候 xff0c 有些虚拟机需要开机自启动 方案 STEP 1 编写start bat脚本 34 D Program Files Oracle VirtualBox VBoxManage exe
  • js模拟C#Matches方法。

    水平有点低 xff0c 感觉应该这样写 var str 61 34 今年是2013年7月24日12 00 12 xff0c 我打算在2023年7月24日12 01 10登月 34 function Matches inputStr reg
  • MFC在其他线程中刷新主对话框中EDIT等控件数据

    为了程序稳定性 xff0c 在数据处理线程中 xff0c 所有与主UI线程有关的控件数据刷新应该到主UI线程中处理 也就是数据处理线程发消息 xff0c 让界面UI去更新控件 例如在项目中用到EDIT控件需要实时更新数据 xff0c 用Po
  • 多线程之生产者消费者模式

    文章目录 基本组成阻塞队列有界队列与无界队列ArrayBlockingQueueLinkedBlockingQueueSynchronousQueue 流量控制与信号量 Semaphore 双缓冲与Exchanger 基本组成 生产者 xf

随机推荐

  • IDEA用Maven创建SpringMVC项目和配置(XML配置方法)

    IDEA用Maven创建SpringMVC项目和配置 xff08 XML配置方法 xff09 一个人的百度甚是寂寞 xff0c 最近在写Java后台 xff0c 用Maven创建的SpringMVC项目可谓爬了很多的坑 xff0c 在百度滚
  • 解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题

    一种情况 mysql的赋权操作 GRANT ALL PRIVILEGES ON TO root IDENTIFIED BY 123456 WITH GRANT OPTION mysql赋权操作 GRANT ALL PRIVILEGES ON
  • Ubuntu的recovery模式进入及退出

    如果root密码忘记 xff0c 可以进入recovery模式进行重置 或者当sudo命令出现错误时 xff0c 进入recovery模式可以修复 etc sudoers文件 recovery模式 1 启动Ubuntu系统 xff0c 过程
  • mxnet,nd中的asscalar()函数

    X asscalar 将向量X转换成标量 xff0c 且向量X只能为一维含单个元素的向量 X xff1a nd类型的数据 创建一个单个元素的向量 test 61 nd array 2 输出 xff1a 2 lt NDArray 1 64 c
  • YOLO v2和V3 关于设置生成anchorbox,Boundingbox边框回归的个人理解

    虽然阅读量不是很多 xff0c 但是没想到居然能得到这么多收藏和赞 xff0c 大家提出的问题 xff0c 我会不断更新 xff0c 尽量把过程解释得让大家都能了解清楚 PS xff1a 这篇文章是自己学习纪录下的笔记 xff0c 主要是通
  • 浪潮服务器NF5280m5 配置,raid和系统 安装纪录

    遇到的问题 xff1a 新到了一台服务器浪潮服务器NF5280m5 用u盘装ubantu系统 xff0c 一开始就找不到硬盘 xff0c 对于服务器0概念的新手来说太难弄了 xff0c 折腾了很久最后问客服解决了问题 服务器情况 xff1a
  • Longest Substring with K Distinct Characters (medium)

    刷题参考 xff1a https blog csdn net IBelieve2016 article details 104544763 include lt iostream gt include lt vector gt includ
  • vmvare ssh连不上,windows ping不通centos,centos能ping通windows

    写在前面 xff1a 此文章只对自己的电脑情况适应 xff0c 也仅为自己学习过程中的记录 xff0c 不对任何人负责 操作前记好自己原来的配置 xff0c 不适应的情况下还可以恢复 被楼下几个评论给恶心到了 x1f922 xff0c 刚学
  • 使用python-iptables库设置linux防火墙权限,只允许特定ip访问指定端口,通过web服务二次验证

    背景 xff1a 某天周末开着黑 xff0c 打着游戏 xff0c 吹着牛逼 xff0c 突然就被一条消息给打断了 经过分析发现可能是因为服务器账号密码设置太简单 xff0c 实验室服务器使用frp后 xff0c 被人下了挖矿脚本cnrig
  • 毕业论文 - 写作问题总结 和 tips

    主要是一些我自己写论文碰到的问题总结 xff0c 将经验分享出来 xff0c 帮助每一个写论文的苦逼学子 1 论文格式 可以知网找到往届师兄姐的论文 xff0c 找导师要学校的论文格式的文档 xff0c 对照格式写 2 在word里面提前设
  • 【C#】——系统编码规范

    C 系统编码规范 开发程序时 xff0c 往往会有很多人参与 xff0c 为了时程序与代码风格标准化 xff0c 以便于时每个参与才发的人员尽可能直观地查看和理解其他人编写的代码 xff0c 需要在编码之前制定一套统一的编码规范 下面介绍一
  • 实现字典树

    自己实现的字典树版本 带详细注释 package leetcode LC class TrieNode 4个参数设置 以该节点字符为结尾的字符串数目 int end num 以该节点作为前缀字符的个数 int prefix num 是否是叶
  • python爬取html,反转义,双斜杠(\\)转换成单斜杠(\)字符被json正常解析

    新手刚学py不久 xff0c 用正则爬取数据的时候获得了一段json数据格式的段落 xff0c 抓取回来的时候发现本身的文档已经是加了双反斜杠 的字符串 xff0c 这时候我用json loads 格式化数据的时候出现错误 xff0c 搞了
  • Mysql插入数据去重方法

    最近写爬虫 xff0c 有需求需要将数据插入mysql xff0c 由于爬虫采用分布式 xff0c 可能会多次爬重复页 xff0c 这时候就需要对数据去重 假设 xff1a 表 xff1a test 含 id xff0c a xff0c b
  • IBM的云平台Bluemix使用初体验-创建第一个容器

    概述 第一次使用IBM的云平台Bluemix xff0c 写一个blog记录一下 我注册Bluemix挺早的 xff0c 但是在工作中一直没有机会使用IBM的云平台 现在辞职创业 xff0c 做自己喜欢的互联网 xff0c 终于有机会用上了
  • 在Source Insight中添加对.cc的支持

    Options gt Document Options Document Type gt 下拉选择 xff1a C 43 43 Source File 在File Filter 中加入 cc
  • Android HFP流程记录

    DP 完成后 xff0c btif dm c文件中 xff0c btif dm search services evt函数 xff0c bond state changed BT STATUS SUCCESS amp bd addr BT
  • OPP文件传输

    在RFCOMM连接后 xff0c 进行Command Type Parameter Negotiation时 xff0c 会协商Credits初始值 建立OBEX连接时 xff0c 会将poll bit设置 xff0c 用于Given Cr
  • 关于ctags的使用

    第一步 xff1a 首先安装ctags sudo apt get install ctags 第二步 xff1a 在你要编辑的源码目录下ctags R 注意 xff1a 这个源码目录就是你要编写代码的目录 xff0c 不是其它的目录 xff
  • 踩坑之react生命周期

    问题情景 创建组件tableCom xff0c 用来渲染表格 xff0c 实质还是使用antd里的table xff0c 但是重新包装一下是为了columns和dataSource通过外部数据传入 span class hljs tag l