import React, { useState, useEffect } from 'react';
import _ from 'lodash'
// 防抖案例
// 比如说搜索功能。他是把上一次的id值清空, 每隔多少秒再去请求后台
let id = ''
export default function Debounce() {
//防抖 触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间
// const onChange = event => {
// const values = event.target.value
// id && clearTimeout(id)
// id = setTimeout(() => {
// console.log('请求后台', values)
// }, 500)
// }
//节流 连续触发事件,但是在 n 秒中只会执行一次函数
//判断如果id值为空,就进入,然后把settimeout值赋值给id, 在settimeout里把id值清空。 每隔多少秒去请求一次后台。
const onChange = event => {
const values = event.target.value
if (!id) {
id = setTimeout(() => {
id = null
console.log('请求后台', values)
}, 500)
}
}
//防抖
const debounce = _.debounce(() => console.log('防抖'), 3000)
//节流 trailing设置过期时间 最后一次没够多少秒。他也会输出一次
const throttle = _.throttle(() => console.log('节流') , 3000, { trailing: true })
return (
<div>
<input type="text" onChange={onChange} />
<input type="text" onChange={throttle} />
</div>
);
}