在vue中组件上挂载ref可以拿到组件中的所有值和方法;
    在react中可以传递一个ref,子组件通过useImperativeHandle处理这个ref添加一些函数通过闭包访问外部值,这样外部就可以通过这个useRef声明的变量.current访问子组件中的useImperativeHandle添加的方法,然后通过方法通过闭包访问子组件所有的值和方法,说的繁琐,see code:

    1. import React, { useState, useRef, useImperativeHandle } from "react";
    2. function App() {
    3. const toolbarRef = useRef(null);
    4. return (
    5. <div>
    6. <Toolbar cRef={toolbarRef} />
    7. <button
    8. onClick={() => {
    9. toolbarRef.current.sayHi();
    10. console.log(toolbarRef.current);
    11. }}
    12. >
    13. click
    14. </button>
    15. </div>
    16. );
    17. }
    18. function Toolbar(props) {
    19. const [name, setName] = useState("lisa");
    20. useImperativeHandle(props.cRef, () => ({
    21. sayHi: () => {
    22. console.log("hi" + name);
    23. },
    24. }));
    25. function sayHello() {
    26. console.log("hello");
    27. }
    28. return <div>-</div>;
    29. }
    30. export default App;

    https://zh-hans.reactjs.org/docs/hooks-reference.html#useimperativehandle