我正在使用refs
访问子组件
<MyComponent
ref='_my_refs'
...
/>
并打电话给他们
this.refs._my_refs.scrollToTop();
我收到以下错误
警告:不能给函数组件提供参考。尝试访问此 ref 将失败。你的意思是使用 React.forwardRef() 吗?
我正在使用refs
访问子组件
<MyComponent
ref='_my_refs'
...
/>
并打电话给他们
this.refs._my_refs.scrollToTop();
我收到以下错误
警告:不能给函数组件提供参考。尝试访问此 ref 将失败。你的意思是使用 React.forwardRef() 吗?
你需要MyComponent
环绕React.forwardRef()
例如
const MyComponent = React.forwardRef((props, ref) => {
return (
<View ref={ref}> // using the ref
// your component
</View>
})
此外,由于它是旧版 refref='_my_refs'
,因此不起作用,您应该将其用于类组件或功能组件。您可以在docs
中查看更多详细信息。React.createRef()
useRef
例如
class ParentComponent extends React.Component {
constructor(props) {
super(props);
this._my_refs = React.createRef();
}
render(){
return (
// ...
<MyComponent
ref={this._my_refs}
...
/>
)
}
}
或者
const ParentComponent = props => {
const myRef = React.useRef()
return (
// ...
<MyComponent
ref={myRef}
...
/>
)
}
如果您将 a 传递ref
给功能组件并且它没有被包裹React.forwardRef
,它将给您错误
警告:不能给函数组件提供参考。尝试访问此 ref 将失败。你的意思是使用 React.forwardRef() 吗?
这意味着MyComponent
是一个功能组件,而不是围绕React.forwardRef
.