zoukankan      html  css  js  c++  java
  • react hooks useState更新数据不及时问题及处理

    数据更新有延时不能及时获取:

    const [state, setState] = useState({
         num: 0
    });
    
    // 直接更新数据
    const doing = () => {
        setState({
            num: 1
        })
        console.log(state); // { num: 0 } 数据未更新
    }
    
    // 使用函数返回更新数据
    const doing = () => {
        setState(() => {
            ...
            return { num: 1 }
        })
        console.log(state); // { num: 0 } 数据未更新
    }
    
    // 使用async/await异步等待获取
    const doing = async () => {
        await setState(() => {
            ...
            return { num: 1 }
        })
        console.log(state); // { num: 0 } 数据未更新
    }

    doing()

      调试发现直接更新数据、使用函数返回更新数据、使用async/await异步等待获取 数据都不能及时更新

    解决方案:

    const [state, setState] = useState({
         num: 0
    });
    
    // 直接更新数据
    const doing = () => {
        setState({
            num: 1
        })
        console.log(state); // { num: 0 } 数据未更新
    }
    
    doing()
    
    useEffect(() => {
         console.log(state); // { num: 1 } 数据已更新
    }, [state])
    

      Effect Hook 可以让你在函数组件中执行副作用操作,给useEffect钩子传递第二参数[state]侦听数据变化执行钩子函数,在useEffect内能获取到更新完的数据

  • 相关阅读:
    4-18
    Vue学习 2017-4-9
    前端杂谈
    不错的博客哦!
    待整理知识杂项
    Vue学习历程
    王工的权限理解
    【NX二次开发】图标图像
    【转】C++怎么读写windows剪贴板的内容?比如说自动把一个字符串复制.
    获取计算机名
  • 原文地址:https://www.cnblogs.com/peter-web/p/15165387.html
Copyright © 2011-2022 走看看