React在使用装饰器装饰过后ref就失效了,因为该this指向了所用的装饰器,参考了网上的方法后可用如下方法解决,仅供参考。
- 在utils文件夹内 新建一个refPenetrate.js文件 (文件命名可自己定义)
import React from 'react';
const getRef = WrapperdComponent => {
return props => {
const { getRef, ...otherProps } = props
return <WrapperdComponent ref={getRef} {...otherProps} />
}
}
export default getRef;
- 子组件引入文件,并进行装饰
import getRef from '@/utils/refPenetrate';
@getRef
export default class ChildrenItem extends Component {
...
}
- 父组件内引入子组件,在render里将原有的ref进行如下修改
<ChildrenItem getRef={(ref) => this.ChildrenItem = ref} />