App
import React, { PureComponent, createRef } from "react";
import Hello from "./Hello";
import World from "./World";
export class App extends PureComponent {
constructor() {
super();
this.refTitle = createRef();
this.refHello = createRef();
this.refWorld = createRef();
}
btnClick() {
console.log(this.refTitle.current);
console.log(this.refHello.current);
this.refHello.current.say();
console.log(this.refWorld.current);
}
render() {
return (
<div className="wrap">
{/* <h2 ref="refHeader">这是标题</h2> */}
<h3 ref={this.refTitle}>标题h3</h3>
<Hello ref={this.refHello} />
<button onClick={(e) => this.btnClick()}>按钮</button>
<World ref={this.refWorld} />
</div>
);
}
}
export default App;
Hello
import React, { PureComponent } from "react";
export class Hello extends PureComponent {
say() {
console.log("说话");
}
render() {
return <div>Hello</div>;
}
}
export default Hello;
World函数组件
import { memo, forwardRef } from "react";
const World = memo(
forwardRef(function (props, ref) {
return <div ref={ref}>World</div>;
})
);
export default World;