React useState setState之后获取到的数据一直是初始值

问题描述:

本地想写一个往数组里添加数据的逻辑,添加完数据需要重新渲染页面效果,所以通过useState辅助,获取需要添加的数据之后,直接调用set方法,

由于下一次添加数据,需要加到数组最前方,所以需要获取数组本身,但是不管set了几次,每次获取的数组还永远是初始值:

javascript 复制代码
export function Demo(props: PROPS){

    ...
    let [dataSource, setDataSource] = useState<Array<object>>([])
    ...

   
                ...
                dataPush: (pushDataList: Array<object>) => {
                    let dataList = JSON.parse( JSON.stringify(pushDataList) )

                    console.log(dataList,dataSource)
                      
                    setDataSource([
                        ...dataList, ...dataSource
                    ])
                },
                
                ...

       


}

在dataPush方法内部,会获取dataSource的值,然后再dataSource之前再添上传入的参数,再触发set方法赋值回dataSource。

但是控制台打印的dataSource一直是初始值\[\],甚至也不是上一次set的值:

解决方案:

不太懂为什么会造成这种现象,检索了一下也没弄明白,以后能理解的时候再来回顾原理。

但解决方式就是每次先给dataSource赋值,然后再调set。

javascript 复制代码
                dataPush: (pushDataList: Array<object>, ifEditable?: boolean) => {
                    let dataList = JSON.parse( JSON.stringify(pushDataList) )

                    console.log(dataList,dataSource)
                    
                    dataSource = [...dataList, ...dataSource]
                    setDataSource([...dataSource])
                      
                },
相关推荐
程序猿乐锅20 分钟前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节
老木避暑研究所24 分钟前
负氧离子数据的采集、清洗与可视化:一套可复用的环境监测数据分析模板
前端·人工智能·数据分析
计算机魔术师43 分钟前
AI 推翻了一个当了30年地基的假设,查的人恰好是立论者
前端
范同学~1 小时前
项目添加水印
java·前端·javascript
鬼手点金1 小时前
缓存作为架构约束
开发语言·前端·人工智能·python·microsoft·缓存·架构
月夏1 小时前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js
IT_陈寒1 小时前
React实战技巧总结:如何优雅处理复杂列表的渲染卡顿问题?
前端·人工智能·后端
ZoeLandia1 小时前
React11:数据请求与 TanStack Query
前端·react.js·typescript·react
软件技术NINI1 小时前
基于PHP和MySQL的快递代收点管理系统的设计与实现
开发语言·javascript·数据库·mysql·毕业设计·php·毕设
前端架构师-老李1 小时前
HTML与CSS基础第二课—初识HTML
前端·css·html