Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否使用ref以编程方式触发单击事件?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 是否使用ref以编程方式触发单击事件?

Javascript 是否使用ref以编程方式触发单击事件?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有2个按钮,我希望我可以通过ref触发点击事件 const Button = ({ ref }) => ( <button onClick={() => alert("btn 2 clicked")} ref={ref}> btn 2 </button> ); export default function App() { const btnRef = useRef(null); return ( <

我有2个按钮,我希望我可以通过ref触发点击事件

const Button = ({ ref }) => (
  <button onClick={() => alert("btn 2 clicked")} ref={ref}>
    btn 2
  </button>
);
export default function App() {
  const btnRef = useRef(null);
  return (
    <div className="App">
      <button
        onClick={() => {
          btnRef && btnRef.current && btnRef.current.click();
        }}
      >
        btn 1
      </button>
      <br />
      <br />
      <Button ref={btnRef} />
    </div>
  );
}
const按钮=({ref})=>(
警报(“btn 2已单击”)}ref={ref}>
btn 2
);
导出默认函数App(){
const btnRef=useRef(null);
返回(
{
btnRef&&btnRef.current&&btnRef.current.click();
}}
>
btn 1


); }
但它不起作用,我在这里错过了什么? 您需要使用

const按钮=React.forwardRef((道具,ref)=>(
警报(“btn 2已单击”)}ref={ref}>
btn 2
));
例如:

const Button = React.forwardRef((props, ref) => (
  <button onClick={() => alert("btn 2 clicked")} ref={ref}>
    btn 2
  </button>
));