reactjs - 不必要地使用 React.forwardRef() 会带来什么不利吗?
问题描述
我正在使用我的自定义按钮组件。
ref
直到在我的按钮组件中不需要。
但现在我必须让它支持ref
。
所以,我React.forwardRef()
在代码中添加了。
而且效果很好。
这是我的例子。
interface ButtonProps {
children?: string | number | React.ReactNode;
style?: CSSProperties;
className?: string;
onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
disabled?: boolean;
block?: boolean;
}
export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({disabled, onClick = ()=>{}, className, block, style, children}, ref ) => {
return (
<button ref={ref} disabled={disabled} onClick={onClick} className={`Button ${className} ${block ? '--block' : ''}`} style={style}>
{children}
</button>
)});
在我的项目中,我使用了 100 多个 Button 组件,
但只有少数组件需要ref
.
这意味着几乎所有 Button 都不需要React.forwardRef()
.
像上面这样使用的组件可以吗?或者
我是否必须在使用后分离组件?
解决方案
forwardRef 非常有用:它是一个很棒的 api,可以对 dom 元素进行抽象,同时提供访问 dom 元素的能力。
流行的 ui 库将其大部分组件导出为forwardRef
s。因为它将使开发人员能够访问 dom 元素。所以我认为你做出了一个很好的决定,让你的Button
组件 a forwardRef
:它使开发人员能够在需要时访问 dombutton
元素。
推荐阅读
- cordova - 使用 FCM 的 Cordova 推送通知 android 和 ios
- r - 在 R 上打开 Rdata 文件
- php - 添加查询 HTML/PHPMYADMIN
- vue.js - VUE 不同路径的相同组件实例
- ios - 无法获取ios模拟器中按键的坐标
- database - 在数据库中设置关系表
- php - 我如何编写一个包含每个产品的多个值的数组
- php - 如何从 XML 获取数据并转换为 php 中特定节点的数组?
- entity-framework - EF 代码首先自引用多对多
- docker - codeship 使用 codeship/google-cloud-deployment 的旧图像卡住了