react useState数据已经更新,但函数中使用的还是旧数据
·
先看现象

首先初始值为0

在发请求的函数中打印当时获得的username值

页面刚渲染时的效果

将用户名改为zhangsan,发请求得到的效果
此时查看react的开发者工具

可以看到数据已经更新
此时我通过其他方式调用发请求的方法

这种方式使用的数据还是一开始的初始值
再次查看开发者工具

可见username确实还是张三
所以问题就出在调用getUsers的那里
看一下具体场景

具体代码

这里使用useState,问题就是在这上面
但我刚用react,小白一个完全搞不清原因,网上找了半天,终于找到一个方法
先看大佬的解释

虽然和我的场景出入挺大,但现象是一样的,值是最新的,页面也渲染了,但有部分内容里的值还是旧值
我这里也是使用了上面大佬介绍的方法
使用ref
let usernameRef = useRef()
usernameRef.current = username
将username 赋值给usernameRef.current
function getUsers() {
console.log('@', usernameRef.current);
axios.get(`api/v1/user/getUserByLike`, {
params: {
pagesize: paginationOption.defaultPageSize,
pagenum: paginationOption.current,
username: usernameRef.current
}
}).then(
然后参数username,不直接拿username,拿usernameRef.current
最终效果

这里只解决了问题,对原因我毫无头绪,有知道的大佬,欢迎评论区补充!
更多推荐
所有评论(0)