我现在这种写法每次setXX都要执行getData,怎样让他把3个set都执行完了再去getData
const [name, setName] = useState('')
const [mobile, setMobile] = useState('')
const [tag, setTag] = useState('')
const onSearch = (values) => {
setName(values.name)
setMobile(values.mobile)
setTag(values.tag_id)
}
useEffect(() => {
getData()
}, [name, mobile, tag])
方法1:不使用
useEffect
来触发接口获取新数据,将getData
绑定到按钮事件上,但是这样开发者需要关注更多操作。方法2:将多个状态合并,依赖就变成一个。但是如果关联性不是太强,合并在一起会增加维护成本
方法3(较为推荐):有多个依赖项同时更改时, 回调函数只执行最新的一次,使用防抖避免短时间多长触发
那如果我们的
useEffect
中有多个函数需要执行,是不是就要对每个函数加上防抖了,无疑有点重复,那进一步优化代码,将函数改为可以支持批量更新操作,在原来基础上进行封装以上就是主要的一些代码实现部分,需要你将其自己梳理好整理业务逻辑。希望对你有帮助