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])
                      
                },
相关推荐
闲猫22 分钟前
Spring AI 对接Deepseek ChatModel 聊天对话
java·前端·spring
自信的未来2 小时前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
SRET2 小时前
Mineradio 沙盒隔离安装完全指南 | 一键安全运行 Electron 应用!!!
javascript·经验分享·安全·electron·aigc·音视频·ai编程
全栈前端老曹2 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
zhangxingchao3 小时前
AI大模型核心八:从 Agent Skill、长文档 RAG 到知识库更新与训练策略
前端·人工智能·后端
zhangxingchao4 小时前
AI大模型核心七:从 Workflow、RAG、记忆治理到幂等性
前端·人工智能·后端
gyx_这个杀手不太冷静4 小时前
Agent开发进阶指南(第 1 章):AI Agent 到底是什么?
前端·agent·ai编程
小小小小宇5 小时前
模型相关知识
前端
小小小小宇5 小时前
模型相关知识二
前端
IT_陈寒5 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端