我还没反应过来。我已经学了几个月了。我目前正在使用ant-design创建标记,并试图在单击时删除它们。我有一个用户的状态,根据他们想要删除或创建标记,用户状态会更新。但是,当I删除标记时,users
状态不会立即更新,并在removeuser()
中的Iconsole.log(users);
返回空数组。我看过以前类似的问题,但是它们使用useeffect()
,但这不适合我的用例。我还尝试将这个
放在代码的返回部分,这在某种程度上解决了问题,但是,每当我从用户表中选中一个复选框时,标记的颜色就会重新呈现。删除标记时,调用removeuser()
函数,其中解析用户ID,以便从状态中删除用户。但是,由于状态没有更新,所以不会删除它,因为它是空的,所以[...users].map()
不会映射任何内容。我如何解决这个问题?
const [users, setUsers] = useState([]);
const createUserTags = () => {
const oldUsers = [...users];
let updatedUsers = selectedRowKeys.map(userId => (
<Tag onClose = {() => removeUser(userId)}
closable key = {userId}>
{[...dataSource].map(user => {
return user.Id === userId && "{user.firstName}" + " "+"{user.surname}";
})
}
</Tag>
));
updatedUsers.unshift(oldUsers);
setUsers([...updatedUsers]);
};
const removeUser = userId => {
// remove user from array list
};
return (
<>
<Button
shape = "round"
onClick = {() => createUserTagsHandler()}
type = "primary"> Create Tag
</Button>
</>
</>
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
共1个答案
匿名用户
当您console.log它时,状态似乎落后了一步,因为setState()是异步的,但是,与前面的情况一样,它仍然可以正确地更新。如果它提交到表单,您将看到它发送正确的更新状态
相关问题
- 找不到“http://java.sun.com/jsp/jstl/core”的标记库描述符 [重复]
- Git 错误:无法与 XX.XX.XXX.XXX 协商:未找到匹配的主机密钥类型。他们的报价: SSH-DSS [重复]
- 无法克隆 git 存储库 [重复]
- 无法更正突然的"服务器证书验证失败"[重复]
- SMTP重复发送消息-需要身份验证
- 如何在MongoDB中引用其他数据库中的实体?[重复]
- 2023-03-23 - GitHub问题:远程主机标识已更改[重复]
- VSCode 中的错误,当我尝试创建一个 Spotify 不和谐机器人时:[ 语法错误:无法在模块外部使用导入语句 ] 与节点.js [重复]
- 在node js中导入时加载“ES模块”的问题[重复]
- 在 Node.js 中导入:错误“必须使用导入来加载 ES 模块”[重复]
- 将javascript作为节点为[重复]的模块运行
- 如何替换此代码中的“require()”?[重复]
- 为什么导入 { 事物 } 有效,但导入事物无效?[重复]
- 在 React JS 中导入 [重复]
- React Components的导入语句在ES6中的工作原理[重复]
- import React和import { Component }语法之间的差异[重复]
- 继承注释-线程“main”org.hubinate.MappingException中的异常:实体的映射中重复列
- 从fs.readFile中获取数据[重复]
- 这些错误消息是什么意思?(爪哇秋千)[重复]
- 数组$ArrayList不能强制转换为java中的java.util.ArrayList[重复]
当您console.log它时,状态似乎落后了一步,因为setState()是异步的,但是,与前面的情况一样,它仍然可以正确地更新。如果它提交到表单,您将看到它发送正确的更新状态
我在React中有各种各样的函数,其中我需要使用useState更改状态,然后根据新状态是否满足某些条件执行一些操作。 当使用prop=“newpassword”调用handleChange时,它使用useState中的setValues方法设置newpassword的值。然后使用正则表达式测试对新密码进行评估,如果它有效,则状态变量passwordIsValid应设置为true。 状态总是比th
问题内容: 我在构建webapp时遇到了这个问题,并在jsfiddle中复制了它。本质上,每次输入内容时,我都希望调用一个输入,然后将其传递到父App类中,然后将其重新呈现到Message类中。但是输出似乎总是比我实际输入的内容落后一步。jsfiddle演示应该可以自我解释。我想知道我是否做错了任何提示。 html js 问题答案: 呼叫不同步。它创建一个“待处理状态转换”。(有关更多详细信息,请
我在我的反应容器中有加减法函数,每当点击跨度'或'-'时都会传递这些函数,以便计算给定不同价格值的三种'产品'的总'价格'。 我的问题是:当我第一次点击任一按钮时,它首先记录初始值0,然后随着每次点击,从总数中增加或减少,但总是落后一步。 例如,如果我点击“苹果,价格:2”,我的控制台记录为0。然后,我将单击“pears,price:5”,我的控制台将记录2,将上一次单击的值相加,而不是将5添加到
如何在USESTEAT数组内推元素反应钩?这是一个老方法在反应状态吗?还是新东西? 例如。设置状态推示例?
团子最近陆陆续续出结果啦,看站里有几位大佬已经拿到了offer,羡慕哭了我还在面试阶段分享一下面经攒人品,让我过吧!! 一面 一面问的问题很常规,首先自我介绍 然后抓着简历酷酷问,不过面试官人还挺好的,没有太刁难我 再就是问了专业的一些问题,包括做产品经理和我之前的一段项目经历的联系,然后产品经理的职责之类的 反问环节我问了面试官美团这个岗位的具体职责 #非技术面试记录#
自我介绍 算法,链表的插入排序 问项目中消息队列如何使用的 介绍消息队列的几种模式 了解死信队列吗 多线程的实现方式 线程池的参数 自己如何微调模型(详细) 如何造数据集 如何评估模型的 如何优化模型的,写过prompt没有(说了自己了解的一些方法,prompt和reflexion) =========================================================