我有一个用react redux包装的简单组件,我有一个对该组件的引用
forwardRef: true
例如:
// Button.tsx
class Button extends React.Component {
// ...
}
// ...
export default connect(mapStateToProps, null, null, { forwardRef: true })(Button);
现在我有了一个父组件,它呈现按钮组件
// ButtonParent.tsx
import Button from './Button';
class ButtonParent extends React.Component {
buttonRef: React.RefObject<Button>;
public constructor(props) {
this.buttonRef = React.createRef()
}
render() {
return (
<>
<Button ref={this.buttonRef}/>
</>
);
}
}
请注意,这是一个最小的简化版本,没有不必要的打字。
问题在于
buttonRef
1.分类
Button
(这是默认的从
Button.tsx
)作为一个值,这是正确的。它还建议我使用
typeof
,这是不正确的。
这个问题源于这样一个事实:
按钮
是来自redux的connect的HOC,但ref的类型是实际的
按钮
类组件。
可以通过重命名和重新导出
按钮
组件,这样:
// Button.tsx
class _Button extends React.Component {
// ...
}
// ...
export default connect(mapStateToProps, null, null, { forwardRef: true })(_Button);
然后使用
buttonRef: React.RefObject<_Button>
.
但我想知道是否有更简单/更干净的方法,也许redux会以某种方式导出包装组件的类型,而我只是不知道如何实现?