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

Gus*_*imo 5 javascript typescript reactjs

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

const [selectedUsers, setSelectedUsers] = useState<IUser['id'][]>();
Run Code Online (Sandbox Code Playgroud)

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

使用完后,<select />我想清除它,我可以通过将值设置为null或来轻松完成此操作undefined

例如:

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

但是,由于 select 组件预期接收 TS 属性,因此我无法null作为值传递。<select /><IUser['id'][] | undefined>

IE:

Type 'null' is not assignable to type 'string[] | undefined'.
Run Code Online (Sandbox Code Playgroud)

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

IE:

setSelectedUsers(undefined);
Run Code Online (Sandbox Code Playgroud)

undefined这是一个关于最佳实践的问题,因为如果我使用而不是上面的代码,则可以完美地工作null

mik*_*keb 1

就过去吧[] as string[]

setSelectedUsers([] as string[]);

应该可以做到这一点。

编辑以将内容包含在评论中:

您输入的原始问题的措辞方式是一个单元素数组,应定义为:

const [selectedUsers, setSelectedUsers] = useState<string[]>();
Run Code Online (Sandbox Code Playgroud)

然后,上面的解决方案就可以工作了。