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])
                      
                },
相关推荐
panxianren1 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
陈随易3 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
可乐鸡翅yeah_4 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说4 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man5 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
传人once5 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.466 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
liangshanbo12156 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once7 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
库拉镜像AI牛牛7 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别