React项目经验总结

article/2025/11/11 7:27:03

目录

 1、报错 xxx.map is not a function

 2、如何将后端返回的二进制流转换为base64格式的展示?

 3、下载

 4、父组件如何把值传给子组件?子组件又如何接收?

 5、父组件如何获取子组件所有的state里面定义的值?

 6、antd+react 之layout左侧菜单点击时加背景色--高亮(适用于每一个项目)

 


1、报错 xxx.map is not a function

错误原因:因为后端数据还没收到,数组是空的,而map方法不会对空数组检测,结果报错

解决:

拓展:Array.isArray(obj) 如果对象是数组,返回的是true,否则false


2、如何将后端返回的二进制流转换为base64格式的展示?

语法:

<img width="40" height="30" src=`data:image/jpg;base64,${xxx}`/>

xxx指的是:后端返回的图片的字段,如 logo、 galleryImage......


3、下载

1)直接window.open ( 请求的接口 )

这个会闪屏

2)也可以自己写一个点击事件进行下载

原理是动态创建a标签,设置href属性

/**
* 下载资料
* @param {Number} e 当前点击项  name:文件名  format:文件格式  api_url:请求接口
*/
handleDownFile = (event, name, format, api_url) => {event.preventDefault();event.stopPropagation();//开启loading 按钮置灰this.setState({loadingStatus: true,buttonDisabled: true,});fetch(api_url, {method: "get",// 下面两行可以不用要credentials: "include",headers: new Headers({"Content-Type": "application/json",// 'X-Auth-Token': User.getToken(),}),}).then((response) => {response.blob().then((blob) => {//关闭loading 按钮恢复正常let blobUrl = window.URL.createObjectURL(blob);const filename = name + `.${format}`; // 设置文件名称 eg: test.zipconst aElement = document.createElement("a"); // 获取a标签元素document.body.appendChild(aElement);aElement.style.display = "none";aElement.href = blobUrl; //设置a标签路径aElement.download = filename;aElement.click();document.body.removeChild(aElement);this.setState({loadingStatus: false,buttonDisabled: false,});});}).catch((error) => {//关闭loading 按钮恢复正常this.setState({loadingStatus: false,buttonDisabled: false,});});};

4、父组件如何把值传给子组件?子组件又如何接收?

1)比如,我在父组件里面的方法我想传给子组件

_this是随便定义的,和子组件有关系,一会在子组件里面要写的名字

this.init 就是父组件里面传的init方法

2)子组件是这样接收的 this.props.xxx

这里的init就是父传过来init()


5、父组件如何获取子组件所有的state里面定义的值?

1)在父组件里面声明一个ref,是在父组件里面哈

2)绑定在子组件上面

3)然后就可以通过this.ref.current.state获取,在父组件里面

注意:所有的操作都是在父组件里面操作,子组件不需要做什么


6.antd+react 之layout左侧菜单点击时加背景色--高亮(适用于每一个项目)

需求: 我想点击产品管理,订单管理,信息管理能加蓝色背景,不是单纯的通过点击加背景色


解释说明:

首先我们从组件上面复制下来的左侧菜单长这样,defaultSelectedKeys是默认选中的菜单,一会我们会操作它,而且里面的数据写死的,我们不想这样,改为动态的渲染


落地代码:
如何动态渲染左侧菜单呢? 我们可以定义一个数据(这一步和实现背景色还没有关系)


然后循环:


效果就是:

 因为有一个属性是:defaultSelectedKeys,里面写的key为1 , 所以就是第一个高亮

落地代码


实现如何点击高亮呢?
(1)首先定义一个存放key的初始值,


(2)然后在这个钩子函数里面写逻辑代码,思路就是:取出当前的url,然后再和自己的path路径里面的url进行匹配,如果匹配成功,就取出当前key值,并且在setState里面修改state的值,然后绑定在默认值上面

注意:因为点击tab栏切换时URL变化,页面相当于刷新了,就会调用这个钩子函数


注意这里: 可以直接在Menu上面写 selectedKeys={this.state.defaultMenuKey},但是每次都要this.state.xxx
挺麻烦的,所以就解构一下



这样一个高亮效果就完成了


http://chatgpt.dhexx.cn/article/UDogUsNL.shtml

相关文章

前端程序员应该了解的项目经验分享

1&#xff1a;HTML 尽量使用语义化标签 header aside main footer 等给a标签加上href&#xff1a;“javascript&#xff1a;&#xff1b;”就能禁止跳转块级元素独占一行除了div等那些&#xff0c;基本上都是行内元素行内元素设置宽高边距无效img、input属于行内替换元素:heig…

html项目经验,web前端没有项目经验怎么面试

web前端没有项目经验面试的方法&#xff1a;1、要熟练掌握前端的基本知识&#xff1b;2、了解目前基础框架的使用&#xff1b;3、熟练掌握基础知识的使用技巧&#xff1b;4、要表现出良好的学习方法和心态。 近年来&#xff0c;随着前端的火热&#xff0c;很多人都纷纷加入到前…

Orientdb基本操作

一、建模 1、 模型定义-销售数据库&#xff08;saledb&#xff09; 顶点继承自属性人&#xff08;Person&#xff09; 姓名&#xff08;name&#xff09;性别&#xff08;sex&#xff09;出生日期&#xff08;birthday&#xff09;员工&#xff08;Employee&#xff09;V、Per…

redis切换db方法

//最近发现redis 数据都是默认存在db0的 看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开 后面自己总结了三种方法给大家分享下 有什么不足的地方大家也可以指出来哦 提供了三种方式 切换db的方法 1- 第一种方式最简单 先看看redis 的yml 文件…

Redis基本介绍

文章目录 1.Redis简介2.Redis应用场景3.Redis单线程模型4.Redis常用命令5.Redis数据结构6.SpringBoot整合Redis框架 参考蚂蚁课堂 1.Redis简介 Redis属于No-sql数据库类似于MongoDB&#xff0c;是一个完全开源免费的一个高性能的key-value数据库。它是基于内存的数据库&#…

DB2的HADR的搭建

整理这篇文档主要记录复制搭建过程中遇到的问题&#xff0c;被其中一个搞了好久才突然一下子明白过来。。。。 1.备份恢复的时候报错&#xff1a;SQL0970N The system attempted to write to a read-only file. SQLSTATE55009 2.SQL1768N Unable to start HADR. Reason cod…

gaussDB安装

1、用winSCP连接弹性服务器&#xff0c;将windows下的gaussDB安装包复制到linux下 2、将GaussDB安装包从root目录下复制一份到/gs目录下 3、在当前目录解压缩 4、打开配置文件 vi /etc/profile 添加如下命令 ulimit -c unlimited 5、打开系统配置文件 vi /etc/sysctl.c…

redis 如何切换db

文章来源&#xff1a;http://www.ttlsa.com/redis/redis-database/ redis默认有db0~db15之多。 一台服务器上都快开启200个redis实例了&#xff0c;看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。 那么&#xff0c;redis有没有什么方法使不同…

PostgreSQL安装+TimescaleDB安装(Windows)

PostgreSQL安装TimescaleDB安装&#xff08;Windows&#xff09; 一、安装环境1.系统2.PostgreSQL安装包3.TimescaleDB安装包4.Visual Studio Community 2019 二、PostgreSQL安装1.安装PostgreSQL2.配置环境变量3.验证是否安装成功 三、TimescaleDB安装1.安装TimescaleDB2.验证…

springboot连接redis并动态切换database(db0到db15)

redis redis db0到db15springboot连接redis添加配置文件application.properties测试是否连接成功redis动态切换database redis db0到db15 可以理解为数据库表这是redis默认提供的16个表 我们可以把不同的数据存在不同的db上 取得时候可以在不同的db拿到不同类型数据 springb…

各种接口

一、DB9与DB25 九针串口 串口是计算机主要的外部接口之一&#xff0c;通过九针串口连接的设备有很多&#xff0c;像串口鼠标、MODEM、手写板等等&#xff0c;九针串口的示意图如上&#xff0c;其各脚的定义如下&#xff1a; 1 DCD 载波检测 2 RXD 接收数据 3 TXD 发送数据…

Altium designer--DB接口DB9/DB15/DB25/DB37/DB50

使用Altium designer软件绘制DB接口封装图如下所示&#xff1a; 具体获取方式见文末链接 &#xff08;1&#xff09;DB9针 &#xff08;2&#xff09;DB15针 &#xff08;3&#xff09;DB25针 &#xff08;4&#xff09;DB37针 &#xff08;5&#xff09;DB50针 AD封装库链接…

常用接口定义02——DB与DR系列端口

&#xfeff;&#xfeff; DB系列与DR系列端子是设计PCB时经常会遇到的&#xff0c;直到前两天才专门找时间总结了一下两个系列接口的区别并从淘宝上找到实物图与之对应。 DB系列&#xff1a; 1.DB9 2.DB15&#xff08;三排&#xff09; 母头尺寸图&#xff1a; 3.DB15&#x…

pixhawk罗盘校准进度条没有反应

可能还是得把GPS加上才能校准罗盘。 https://blog.csdn.net/LockeDr/article/details/89320593 https://wenku.baidu.com/view/1b5c56114a2fb4daa58da0116c175f0e7cd11968.html

电子罗盘详解之地磁场和航向角

地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而异。地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而…

倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证

电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&#xff09;、实验验证 文章目录 理想情况误差来源内部外部误差模型 硬磁干扰的校准&#xff08;3个参数&#xff09;使用的模型最小二乘法 实测结果总结代码和资料MATLAB代码参考资料样机 理想…

倾斜补偿的电子罗盘(3):椭球拟合,磁传感器软磁干扰和硬磁干扰的9参数校准

倾斜补偿的电子罗盘(3)&#xff1a;椭球拟合&#xff0c;磁传感器软磁干扰和硬磁干扰的9参数校准 背景 之前提到磁传感器的误差来源&#xff0c;并介绍了消除硬磁干扰的3参数校准。倾斜补偿的电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&…

地磁传感器_磁感应计_电子罗盘(compass)原理

ref: http://www.360doc.com/content/14/0724/23/9152906_396847920.shtml https://wenku.baidu.com/view/8fcb6f94284ac850ad024244.html 原文链接&#xff1a;https://blog.csdn.net/weixin_43614541/article/details/104818380 1.利用旋转矩阵推导倾斜补偿公式 电子罗盘的…

电子罗盘全详解

目前, 导航系统在汽车、航海、航空等领域已经得到广泛的应用。电子罗盘是导航系统不可缺少的重要组成部分。 GPS导航定位的缺陷 1、虽然GPS在导航、定位、测速、定向方面有着广泛的应用&#xff0c;但由于其信号常被地形、地物遮挡&#xff0c;导致精度大大降低,其信号可用性仅…

电子罗盘详解之原理和特点

电子罗盘的原理 三维电子罗盘由三维磁阻传感器、双轴倾角传感器和MCU构成。 三维磁阻传感器用来测量地球磁场,倾角传感器是在磁力仪非水平状态时进行补偿;MCU处理磁力仪和倾角传感器的信号以及数据输出和软铁、硬铁补偿。 三维磁阻传感器采用三个互相垂直的磁阻传感器,每个…