React项目经验总结及遇到的坑

 更新时间:2022年07月13日 10:44:12   作者:接着奏乐接着舞  
这篇文章主要介绍了React项目经验总结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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.zip
      const 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
挺麻烦的,所以就解构一下

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

到此这篇关于React项目经验总结的文章就介绍到这了,更多相关React项目总结内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react中如何对自己的组件使用setFieldsValue

    react中如何对自己的组件使用setFieldsValue

    react中如何对自己的组件使用setFieldsValue问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 使用React Native创建以太坊钱包实现转账等功能

    使用React Native创建以太坊钱包实现转账等功能

    这篇文章主要介绍了使用React Native创建以太坊钱包,实现转账等功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 详解React中函数式组件与类组件的不同

    详解React中函数式组件与类组件的不同

    React 函数式组件与类组件的主要区别在于它们的定义和声明方式以及它们之间的一些特性,所以本文就详细的给大家讲讲React中函数式组件与类组件有何不同,需要的朋友可以参考下
    2023-09-09
  • 使用React.forwardRef传递泛型参数

    使用React.forwardRef传递泛型参数

    这篇文章主要介绍了使用React.forwardRef传递泛型参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 解决React报错Expected `onClick` listener to be a function

    解决React报错Expected `onClick` listener to be a function

    这篇文章主要为大家介绍了React报错Expected `onClick` listener to be a function解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 解决react antd Table组件使用radio单选框 更新选中数据不渲染问题

    解决react antd Table组件使用radio单选框 更新选中数据不渲染问题

    这篇文章主要介绍了解决react antd Table组件使用radio单选框 更新选中数据不渲染问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • React18的useEffect执行两次如何应对

    React18的useEffect执行两次如何应对

    这篇文章主要给大家介绍了关于React18的useEffect执行两次如何应对的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用React具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • react-router-dom5如何升级到6

    react-router-dom5如何升级到6

    这篇文章主要介绍了react-router-dom5如何升级到6问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • React Redux管理库示例详解

    React Redux管理库示例详解

    这篇文章主要介绍了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我们需要将之前编写的redux代码,融入到react当中去,本文给大家详细讲解,需要的朋友可以参考下
    2022-12-12
  • React拖拽调整大小的组件

    React拖拽调整大小的组件

    这篇文章主要为大家详细介绍了React拖拽调整大小的组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论