在vue中组件上挂载ref可以拿到组件中的所有值和方法;
在react中可以传递一个ref,子组件通过useImperativeHandle处理这个ref添加一些函数通过闭包访问外部值,这样外部就可以通过这个useRef声明的变量.current访问子组件中的useImperativeHandle添加的方法,然后通过方法通过闭包访问子组件所有的值和方法,说的繁琐,see code:
import React, { useState, useRef, useImperativeHandle } from "react";function App() {const toolbarRef = useRef(null);return (<div><Toolbar cRef={toolbarRef} /><buttononClick={() => {toolbarRef.current.sayHi();console.log(toolbarRef.current);}}>click</button></div>);}function Toolbar(props) {const [name, setName] = useState("lisa");useImperativeHandle(props.cRef, () => ({sayHi: () => {console.log("hi" + name);},}));function sayHello() {console.log("hello");}return <div>-</div>;}export default App;
https://zh-hans.reactjs.org/docs/hooks-reference.html#useimperativehandle
