reactjs - React.FC 可以接收元组作为未命名的参数吗?
问题描述
有一个像这样类型的 React.FC 函数,它接收一个 useState 数组
const TupleFn: React.FC<[boolean, (value: boolean) => void]> =
(([open, setOpen])) =>{}
我知道我可以使用对象类型并将数组道具命名为
{ control: [k, (value: k) => void] }
但我只想传递一个数组而不是对象来解构 lambda 道具中的数组而不是正文,就像这样
(([open, setOpen]) => {}
而不是这样
(control) => {
[open, setOpen] = control
}
尝试使用 rest props 语法传递元组 props (...)
<TupleFn {...[open, setOpen]} />
它将数组转换为对象,因此不能将其解构为数组
解决方案
如果您只想解构 lambda 参数中的数组,可以这样做:
const TupleFn: React.FC<{control: [boolean, (value: boolean) => void]}> =
({control: [open, setOpen]}) =>{return <div></div>}
如果你真的想传递一个数组作为道具,你可以直接使用 React.createElemet。我不认为 JSX 可以以某种方式转换以将未命名的数组作为道具传递(文档中没有提及)。像这样的东西:
<div>
{React.createElement(TuppleFn, [open, setOpen])}
</div>
然后像这样编写功能组件:
({0: open, 1: setOpen}) => {...}
使用站点出现奇怪语法的原因是因为 React 会自动将任何作为 props 传递的非对象值包装到 {0: foo, 1: bar, ...} 形式的对象中,所以你必须像这样解开它所以。否则,您将遇到与解构不可迭代对象相关的运行时错误。
推荐阅读
- flutter - 仅在 iOS 模拟器中的 Syncfusion DataGrid 屏幕上时,CPU 温度和使用率飙升 - Flutter
- c# - 用 (') 和空格分割字符串,但在两个连续的 (') 之间保留任何空格字符
- fortran - 当子数组的维数大于 2 时,MPI_Type_create_resized 会导致分段错误
- python - Django 如何比较 auto_now 和 auto_now_add
- ansible - Ansible - 使用 set_fact 生成复杂的字典(列表字典)
- python - IntegrityError Django Postgres 删除时
- ios - 将计数器更新到 Firestore
- django - 使用 Django、Nginx 和 uWSGI 将 Allauth 实施到生产服务器时出现内部服务器错误
- python - Discord.py 循环播放音频源
- python - 如何用 open-cv 和 Picamera 捕捉人脸?