首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改反应状态需要时间,以便在函数逻辑中采用旧状态

更改反应状态需要时间,以便在函数逻辑中采用旧状态
EN

Stack Overflow用户
提问于 2021-05-27 20:50:13
回答 1查看 44关注 0票数 0

我的子组件中有这个函数,用于删除文档并使用setDocumentList更新它的状态。但是当我非常快地点击删除2-3个文档时,它是从初始状态过滤的,我没有在newDocList中获得更新的状态,所以我的旧文档保持原样。并且仅为最后一个文档更新UI,因为更新状态需要时间。所以..。如何处理这种情况,请提出任何解决方案

提前感谢

代码语言:javascript
运行
复制
    const deleteFile = (doc) => {

    Axios.delete(`url`).then((resp) => {
        let newDocList = [...documentList];
        newDocList = newDocList.filter(e => e.awsId != doc.awsId)
        setDocumentList(newDocList)
        if (props.onDocumentDeleted) props.onDocumentDeleted(newDocList)

    }).catch(error => {
        addMessageToDocUpload(doc, "Unable to delete file!", 'error')
    });

}
EN

回答 1

Stack Overflow用户

发布于 2021-05-27 21:00:37

在设置依赖于先前状态的状态时,请尝试使用回调参数:

代码语言:javascript
运行
复制
 const deleteFile = (doc) => {
    Axios.delete(`url`).then((resp) => {
        setDocumentList(prevDocList => prevDocList.filter(e => e.awsId != doc.awsId));

    }).catch(error => {
        addMessageToDocUpload(doc, "Unable to delete file!", 'error')
    });

更新新文档后,将useEffect添加到派生计算中:

代码语言:javascript
运行
复制
useEffect(
    () => {
        if (props.onDocumentDeleted) { props.onDocumentDeleted(newDocList) }
    },
    [documentList]
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67722509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档