javascript - 将 undefined 传递给 React setState 是错误的吗?

标签 javascript reactjs typescript

假设我在我的 React 组件上声明了以下状态:

const [selectedUsers, setSelectedUsers] = useState<IUser['id'][]>();

所述状态用作第三方 HTML 的值 <select /> (Ant Design)。

在我使用完 <select /> 之后我想清除它,我可以通过将值设置为 null 轻松地做到这一点或 undefined .

例如:

setSelectedUsers(null);
<select value={selectedUsers} /> // Is now null, no option is selected

但是,我无法通过 null作为 <select />由于选择组件上预期的 TS Prop 的值(value),因为它希望收到 <IUser['id'][] | undefined> .

即:

Type 'null' is not assignable to type 'string[] | undefined'.

鉴于上面的上下文,传递 undefined 有什么问题吗?到 React 状态?

即:

setSelectedUsers(undefined);

这是一个关于最佳实践的问题,因为如果我使用 undefined,上面的代码将完美运行。而不是 null .

最佳答案

undefined 作为值传递给 setState 是完全没问题的。状态的值,在您的例子中是 selectedUsers,可以是任何 JavaScript 类型。

undefined 是 JavaScript 中的“原始值”,因此是常规类型。在此处查找有关 JavaScript 类型的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#javascript_types

关于javascript - 将 undefined 传递给 React setState 是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896925/

相关文章:

javascript - React中如何获取某个状态下数组的长度?

sql-server - 从 sql 查询制作 json

typescript - 使用 fetch api 处理 500 响应

javascript - 从 html 输入中获取值

reactjs - 世博会应用程序 : The action 'TOGGLE_DRAWER' was not handled by any navigator

javascript - 使用 React 实现多个列表的拖放

javascript - 如果我位于该类中另一个对象中的一个对象中,如何获取对该类实例的引用?

javascript - 如何让按钮点击后转到页面的某个部分?

javascript - 始终关闭一个打开的元素 jquery 切换

javascript - renderToString 使文件的每个字符都小写,因此无法渲染,如何解决此问题?