react中类组件与函数式组件ref使用
程序员文章站
2022-06-15 18:44:26
...
在某些场景中,我们可能需要通过ref来实现某些功能,比如父组件调用子组件的方法。
父组件为类组件
import React, { Component, createRef } from 'react';
import ClassChild from './ClassChild.jsx';
import FunChild from './FunChild.jsx';
export default class DemoLayout extends Component {
constructor() {
this.state = {
funRef: createRef(),
}
}
render() {
return (
<>
<ClassChild ref={ref => this.classRef = ref} />
<FunChild onRef={this.state.funRef} />
</>
)
}
}
函数子组件 FunChild
import React, { forwardRef, useImperativeHandle } from 'react';
function Fun(props, ref) {
const submit = () => {
console.log('star');
};
// 第一个参数是父组件的ref,第二个参数是要返回暴露给调用者的属性或者方法
useImperativeHandle(props.onRef, () => {
return{
test,
}
});
return (
<div>
<span></span>
</div>
);
}
export default forwardRef(Fun);
在父组件中,对于类子组件,可通过 this.classRef 获取子组件属性和方法。
对于函数子组件,可通过 this.state.funRef.current 获取子组件属性和方法,需要注意的是,所获取到的信息需要在子组件中先设置哪些为暴露信息。
上一篇: Redis 大批量数据插入
下一篇: 笨办法学python-习题1