类组件
回调函数
class Foo extends Component {
handleInput = (input) => {
this.input = input;
}
onClick = () => {
this.input.focus();
}
render() {
return (
<div>
<input type="text" ref={this.handleInput} />
<button onClick={this.onClick}>聚集</button>
</div>
)
}
}
使用 createRef (推荐写法)
class Foo extends Component {
inputRef = createRef();
onClick = () => {
this.inputRef.current.focus();
}
render() {
return (
<div>
<input type="text" ref={this.inputRef} />
<button onClick={this.onClick}>聚集</button>
</div>
)
}
}
父组件可以操作子组件的 Ref
const App = props => {
const FooRef = createRef();
const onClick = () => {
FooRef.current.onClick(); // 执行子组件(类组件)上的 onClick 方法
}
return (
<div>
<Foo ref={FooRef}/>
<button onClick={onClick}>父组件</button>
</div>
)
}
函数组件 useRef
const Foo = props => {
const inputRef = useRef();
const onClick = () => {
inputRef.current.focus();
}
return (
<div>
<input type="text" ref={inputRef} />
<button onClick={onClick}>聚集</button>
</div>
)
}