lodash中memoize和values的用法

lodash中memoize和values的用法

lodash模块里的memoizevalues是一起使用的,作用是缓存状态值。

用法:

安装package:
yarn add lodash

引用

import memoize from 'lodash/memoize';
import _values from 'lodash/values';

然后将memoize作为函数,_values作为参数,返回值交给一个自定义变量。这个返回的变量是一个函数,这个新的函数传入的参数就是要缓存的状态值,如果参数是一个对象,缓存的时候就会将对象里边的值变为数组存入。

例子:

var data = {'c':3, 'd':4}
var values = memoize(_values)
const cachenumber = values(data)
console.log(cachenumber)

输出一个数组[3, 4]

当data中的值改变的时候,cachenumber的值不会改变,除非重新调用valuescachenumber赋值。

举个例子:

import React, { useState } from 'react';
import memoize from 'lodash/memoize'
import _values from 'lodash/values'

var data = {'c':3, 'd':4}
var values = memoize(_values)
const cachenumber = values(data)

const Test2 = () => {
    var [other, setother] = useState(data)
    
    const click = () => {
        setother({
            c: other.c + 1,
            d: other.d
        })
        console.log(cachenumber)
    }

    return ( 
        <div id="test">
            <button onClick={click}>button</button>
            <p>{other.c}</p>
        </div>
    );
}
 
export default Test2;

这段代码执行的时候,每点击一次按钮,p标签里边的值会加一,但是在后台console出来的值不变。

注意:
如果将memoize部分写在Test2组件内部,每进行一次点击,Test2组件里边的代码就会重新执行一次,也就是说cachenumber会被重新赋值一次,这样,后台console出来的值也会随着点击加一。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值