前端常用库之-JavaScript工具库lodash

2023-09-17 18:56:24

前端常用库之-JavaScript工具库lodash

一、什么是lodash

官网: https://lodash.com/
github:https://github.com/lodash/lodash
Lodash 中文文档: https://www.lodashjs.com/

Lodash是一个著名的javascript原生库,不需要引入其他第三方依赖。是一个意在提高开发者效率,提高JS原生方法性能的JS库。简单的说就是,很多方法lodash已经帮你写好了,直接调用就行,不用自己费尽心思去写了,而且可以统一方法的一致性。Lodash使用了一个简单的 _ 符号,就像Jquery的 $ 一样,十分简洁。

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

在React项目中,我们通常会用到lodash的以下功能:

  1. 工具函数,如uniqBy、keyBy来处理数组或对象。
  2. 深度克隆对象,避免污染 React 中的状态对象。
  3. 模块化引入单个函数,优化打包大小。
    所以简单来说,lodash是一个非常强大而实用的JavaScript工具库,能够提高代码质量和开发效率。它在React项目中也被广泛使用。

二、安装

$ npm i -g npm
$ npm i --save lodash

三、lodash使用

Lodash 的 pick() 函数介绍和使用

中文文档:https://www.lodashjs.com/docs/lodash.pick

_.pick(object, [props])

参数
object (Object): 来源对象。
[props] (…(string|string[])): 要被忽略的属性。(注:单独指定或指定在数组中。)

返回

(Object): 返回新对象。

例子:

var object = { 'a': 1, 'b': '2', 'c': 3 };
  
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
react 实例demo:pick结合…展开运算符(spread operator)

react 实例demo:

import { pick } from 'lodash';
import React from 'react';
import PropTypes from 'prop-types';
import MyIcon from 'components/MyIcon';
import classes from './NoDataTip.scss';

// 这个NoDataTip组件是一个显示“无数据”提示的React组件
// 这是一个React函数式组件,接收tip和style作为props,渲染一个提示。
// NoDataTip组件可以复用来渲染各种“无数据”的状态,通过配置tip提示语以及MyIcon的type图标,可以实现不同的效果。
// 它通常会在列表加载完成时,但数据为为空时使用,提高了组件的复用性,也统一了界面风格。
const NoDataTip = props => (
  <div {...pick(props, ['style'])} className={classes.container} >
    <p><MyIcon type="info" /> {props.tip}</p>
  </div>
);

NoDataTip.propTypes = {
  tip: PropTypes.string
};

NoDataTip.defaultProps = {
  tip: '暂无数据',
  style: {}
};

export default NoDataTip;

pick方法的返回结果是一个什么样的对象,这里举个例子说明:

… 表示展开运算符(spread operator)
假设传入的props是:

const props = {
  name: 'John',
  age: 20,
  gender: 'male',
  style: {
    color: 'red'
  }  
}

当我们调用:

pick(props, ['style'])

pick会从props中选取style属性,返回一个新的对象:

{
  style: {
    color: 'red' 
  }
}

可以看到,返回了一个只包含style属性的新对象。
然后通过展开运算符:
jsx

<div {...pick(props, ['style'])} >

就可以将这个对象展开,只插入style属性,相当于:

<div style={{color: 'red'}} >

总结:pick返回了一个截取了原对象属性子集的新对象,通过展开可以方便地将这个子集插入到JSX中。

更多推荐

基于springboot实现“闲一品”交易平台电商系统项目【项目源码+论文说明】分享

基于springboot实现“闲一品”交易平台电商系统项目摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,闲一品交易平台当然也不能排除在外。闲一品交易平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整

TCP/IP协议栈的心跳、丢包重传、连接超时机制实例详解

大家好,本文结合具体的问题实例,详细讲解一下TCP/IP协议栈的心跳机制、丢包重传机制等内容,给大家提供一个借鉴和参考。1、问题概述虽然软件底层模块在网络恢复后能自动重连上服务器,但会议因为网络问题已经退出,需要重新加入会议。因为客户特殊的网络运行环境,会频繁出现网络抖动不稳定的情况,客户要求必须要实现60秒内网络恢复

【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码

目录1基本子图绘制示例2子图网格布局3调整子图的尺寸4多行多列的子图布局5子图之间的共享轴6绘制多个子图类型7实战:绘制一个大图,里面包含6个不同类别的子图,不均匀布局。绘制子图(subplots)是在Matplotlib中创建多个子图的常见任务。通过子图,您可以将多个图形放置在同一图表中,以便比较不同的数据或可视化多

sublime编辑latex 出现参考文献无法编译报错:citation “...” undefined

问题描述使用sublime编译latex文件时,参考文献按照常规的方式放好,ctrl+B编译的时候,显示找不到参考文献,编译出的pdf文件也没有references:但是把文件放到overleaf上就可以直接编译出来,说明是本地编译器的问题。解决方案1.编辑LaTeXTools插件的编译脚本我电脑的路径为C:\User

生产数据追溯产线管理看板助力企业实现产品质量追踪

在现代制造业中,企业对于产品质量的追踪和管理变得越来越重要。产品质量的好坏直接关系到企业的声誉和客户满意度。然而,传统的生产管理方式往往无法提供足够的数据和信息来进行全面的质量追踪。生产看板管理系统的出现为企业解决了这一难题。通过实时的数据采集和分析,企业可以追溯每个产品的生产过程,了解每个环节的质量控制情况。这些数据

攻防世界-web-easyphp

1.题目描述打开链接,可以看到如下代码2.思路分析代码都给出来了,接下来就是理解代码的含义了,从代码中不难发现,总共传入三个参数a,b,c,分别需要满足以下条件:2.1a的长度小于等于3,但是转换成int后需要大于60000002.2对b计算md5值,md5的一部分为’8b184b’2.3c是一个json对象,其中c[

7-1_MSPI_NANDFLASH SDK例程详解

1.代码示例路径PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\interfaces\mspi_ds35x1ga_quad_example\src\mspi_ds35x1ga_quad_example.c本文中主要讲解初始化流程内容2.MSPI通信示意图SCK(Serial

JavaScript系列从入门到精通系列第四篇:JavaScript基本语法(二)

文章目录前言一:Number类型1:字符串与Number类型2:检查数据类型3:Number最大值4:Number四则运算精确性二:布尔值1:布尔值数量2:布尔值类型查看三:Null和Undefined1:Null类型2:null值意义3:Undefined前言varstr="123";varstr="456";这么些

第七章 查找 五、二叉排序树

目录一、定义二、代码实现1、查找2、插入3、构造4、删除三、查找效率分析1、查找成功ASL2、查找失败ASL四、总结一、定义二叉排序树(BinarySearchTree,BST)是一种特殊的二叉树,它满足以下条件:若左子树不为空,则左子树上所有节点的值(权值)均小于它的根节点的值;若右子树不为空,则右子树上所有节点的值

《Docker与Kubernetes容器运维实战》简介

#好书推荐##好书奇遇季#《Docker与Kubernetes容器运维实战》已经出版。本书帮助读者系统掌握Docker与K8s运维技能。本书内容本书分两部分系统介绍Docker与Kubernetes的运维技术。(1)Docker部分包括:全面认识Docker、初步体验Docker、Docker基本管理、Docker仓库

springboot

回顾spring轻量级的:指的是spring核心功能的jar包不大。非侵入式的:业务代码不需要继承或实现spring中任何的类或接口IOC:控制反转(InverseofControl),以前项目都是在哪儿用到对象,在哪儿new,把生成对象的权利反转给spring框架,可以对对象进行功能的增强(让spring把对象管理起

热文推荐