繁体   English   中英

React - 从父级单击子组件中的输入

[英]React - click input in child component from parent

如何从父组件单击子组件中的输入(打开文件对话框)? 这就是我所拥有的,但我不太确定如何在点击处理程序中将其带回家。

import React, { createRef } from 'react';
const inputRef = createRef();

// Parent ==============
const Parent = () => {
  const handleClick = () => {
    // open file dialog in child
  };
  return (
    <>
      <Child />
      <button onClick={handleClick}></button>
    </>
  );
};

// Child ==============
const Child = () => {
  return (
    <>
      <input type="file" ref={inputRef} />
    </>
  );
};

我使用 forwardRef 将 ref 从父级传递给子级。

import React, { createRef } from 'react';
const inputRef = createRef();

// Parent ==============
const Parent = () => {
  const handleClick = () => {
    inputRef.current.click();
  };
  return (
    <>
      <Child ref={inputRef}/>
      <button onClick={handleClick}></button>
    </>
  );
};

// Child ==============
const Child = React.forwardRef((props, ref) => {
  return (
    <>
      <input type="file" ref={ref} />
    </>
  );
});

只需使用inputRef.current.click(); 在您的 handleClick 方法中。

import React, { createRef } from 'react';
const inputRef = createRef();

// Parent ==============
const Parent = () => {
  const handleClick = () => {
    inputRef.current.click();
  };
  return (
    <>
      <Child />
      <button onClick={handleClick}></button>
    </>
  );
};

// Child ==============
const Child = () => {
  return (
    <>
      <input type="file" ref={inputRef} />
    </>
  );
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM