reactjs - 创建自定义组件包装器
问题描述
我正在将反应代码迁移到打字稿,并且类型自定义组件包装器存在一个问题。我正在发送as
道具,我将从中创建组件并将其用作 JSX。默认情况下,它设置为,div
但也可以是 React 组件,特别是自定义Link
组件,它RouterLink
从react-router-dom
或a
标记返回。
当前代码
function DropdownMenuItemWrapper({
as ='div',
to,
target,
onClick,
active,
children
}) {
const Wrapper = as ;
return (
<Wrapper
to={to}
target={target}
onClick={onClick}
>
{children}
</Wrapper>
);
}
问题是,我不知道如何键入as
属性以及如何使用Wrapper
. 如果我尝试类似:
const Wrapper = React.createElement(as);
要不就const Wrapper = as;
我得到了错误:JSX element type 'Wrapper' does not have any construct or call signatures.
解决方案
关 :)
type DropdownMenuItemWrapperProps = {
as: Parameters<typeof React.createElement>[0],
// other props type
}
const DropdownMenuItemWrapper = ({
as = "div",
to,
target,
onClick,
active,
children
}: DropdownMenuItemWrapperProps) => React.createElement(as, { to, target, onClick }, children);
推荐阅读
- reactjs - 在 react.js setState 方法中重新格式化响应数据
- c# - 在哪里访问 DDD 中的持久性
- ios - 在具有多个集合视图的视图控制器中的特定集合视图上应用 UICollectionViewDelegateFlowLayout
- android - 如何强制使firebasecrashlytics崩溃?
- nginx - Nginx 服务器显示 500 Internal Server Error
- python-3.x - 向表中插入数据时 Sqlite3 代码中的语法错误
- python - 如何使用选择图例(matplotlib)自动缩放图形?
- python - Django api测试带参数的get请求
- pine-script - 在蜡烛上创建音量点
- clang - 如何编译 cppcheck.exe