假设我在我的 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/