React memoization技术:将函数计算结果缓存起来

Posted sea-breeze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React memoization技术:将函数计算结果缓存起来相关的知识,希望对你有一定的参考价值。

 

一 组件

 

import React,  Component  from "react";
import memoize from "memoize-one";

export default class App extends Component 
  constructor(props) 
    super(props);
    this.state = 
      fruits: ["orange??", "apple??", "peach??"], // 水果列表
      txt: "", // 筛选文本
      counter: 0 // 计数器
    ;
  

  filter = memoize((fruits, txt) => 
    console.log("函数返回值未缓存,计算");
    return fruits.filter(fruit => fruit.includes(txt));
  );

  changeHandler = e => 
    this.setState(
      txt: e.target.value
    );
  ;

  increase = () => 
    const  counter  = this.state;
    this.setState(
      counter: counter + 1
    );
  ;

  render() 
    console.log("组件渲染");

    const  fruits, txt, counter  = this.state;
    const favorFruits = this.filter(fruits, txt);

    return (
      <div>
        <div>
          计数器:counter
          <button onClick=this.increase>增加</button>
        </div>
        <input onChange=this.changeHandler value=txt placeholder="请输入水果名称"/>
        <ul>
          favorFruits.map(fruit => (
            <li key=fruit>fruit</li>
          ))
        </ul>
      </div>
    );
  

 

二 运行效果

 

初始化时,计算一次

 

技术图片

 

点击按钮,组件重新渲染,并没有计算

 

技术图片

 

输入文本,组件重新渲染,再次计算

 

技术图片

 

以上是关于React memoization技术:将函数计算结果缓存起来的主要内容,如果未能解决你的问题,请参考以下文章

thinking--javascript 中如何使用记忆(Memoization )

thinking--javascript 中如何使用记忆(Memoization )

thinking--javascript 中如何使用记忆(Memoization )

thinking--javascript 中如何使用记忆(Memoization )

React使用hooks-useMemo

聊聊 React 里的 Memoize