先看现象

首先初始值为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

最终效果

这里只解决了问题,对原因我毫无头绪,有知道的大佬,欢迎评论区补充!

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐