react学习—Memo Hook

Memo Hook

一、Memo Hook

用于保持一些比较稳定的数据,通常用于性能优化

如果React元素本身的引用没有发生变化,一定不会重新渲染

例:

import React, { useState, useCallback } from 'react'
function Item(props) {
	return <li>{props.value}</li>
}
export default function App() {
	const [range,] = useState({ min: 1, max: 10000 })
	const [n, setN] = useState(0)
	const list = [];
	for (let i = range.min; i <= range.max; i++) {
		list.push(<Item key={i} value={i}></Item>)
	}
	return (
		<div>
			<ul>
				{list}
			</ul>
			<input type="number"
				value={n}
				onChange={e => {
					setN(parseInt(e.target.value))
				}}
			/>
		</div>
	)
}

如上代码,假设有一个较为耗时的处理函数,如果我们每次触发重新渲染,那么将会及其影响性能。所以我们需要一个辅助函数Memo,对其结果进行缓存,除非依赖发生改变,否知直接使用其结果(类似vue的computed)

import React, { useState, useMemo } from 'react'

function Item(props) {
	return <li>{props.value}</li>
}
export default function App() {
	const [range,] = useState({ min: 1, max: 10000 })
	const [n, setN] = useState(0)
	const list = useMemo(() => {
		const list = [];
		for (let i = range.min; i <= range.max; i++) {
			list.push(<Item key={i} value={i}></Item>)
		}
		return list;
	}, [range.min, range.max])
	return (
		<div>
			<ul>
				{list}
			</ul>
			<input type="number"
				value={n}
				onChange={e => {
					setN(parseInt(e.target.value))
				}}
			/>
		</div>
	)
}

博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的博客啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当你在使用React时,你可能会经常遇到需要优化组件性能的情况。React.memo和useMemo都是React提供的两种优化性能的方式。 React.memo是一个高阶组件(Higher Order Component),它可以优化组件的性能,使得组件只有在它的props发生改变时才会重新渲染。这种优化是通过比较前一次和当前props的浅层比较来实现的。使用React.memo时,需要将组件作为React.memo函数的参数传递,例如: ``` import React from 'react'; const MyComponent = React.memo(props => { // 组件代码 }); export default MyComponent; ``` useMemo是一个Reacthook函数,它可以缓存组件中的一些计算结果,以避免重复计算。useMemo接收两个参数:一个计算函数和一个依赖数组。当依赖数组中的任何一个值发生改变时,useMemo会重新计算并返回新的值。如果依赖数组中的任何一个值都没有发生改变,则会返回上一次缓存的值。使用useMemo时,需要将计算函数作为useMemo的第一个参数传递,依赖数组作为第二个参数传递,例如: ``` import React, { useMemo } from 'react'; const MyComponent = props => { const expensiveCalculation = useMemo(() => { // 计算代码 }, [props.dependency]); // 组件代码 }; export default MyComponent; ``` 需要注意的是,React.memo和useMemo都只是对组件性能进行优化的工具,并不是适用于所有情况的万能解决方案。在使用它们时,需要谨慎考虑依赖项和是否真的需要进行性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞羽逐星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值