react useState数据已经更新,但函数中使用的还是旧数据
先看现象首先初始值为0在发请求的函数中打印当时获得的username值页面刚渲染时的效果将用户名改为zhangsan,发请求得到的效果此时查看react的开发者工具可以看到数据已经更新此时我通过其他方式调用发请求的方法这种方式使用的数据还是一开始的初始值再次查看开发者工具可见username确实还是张三所以问题就出在调用getUsers的那里看一下具体场景具体代码这里使用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)