Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 在父组件和子组件中使用对DOM元素的引用_Javascript_Reactjs - Fatal编程技术网

Javascript 在父组件和子组件中使用对DOM元素的引用

Javascript 在父组件和子组件中使用对DOM元素的引用,javascript,reactjs,Javascript,Reactjs,下面的示例中,我将把父对象的ref回调作为prop传递给子对象 function SearchInput(inputRef) { function onCLick(){ //Dosomething and... //Focus on input element using ref } return ( <div> <input ref={inputRef} onCLick={onCLick} /> </div>

下面的示例中,我将把父对象的
ref
回调作为prop传递给子对象

function SearchInput(inputRef) {
  function onCLick(){
  //Dosomething and...
  //Focus on input element using ref
  }

  return (
    <div>
      <input ref={inputRef} onCLick={onCLick} />
    </div>
  );
}

function Parent(props) {
 function focusSearchElement() {
   if (searchElement)
     searchElement.focus();
 }

  return (
    <div>
      My input: <SearchInput inputRef={element => searchElement = element} />
    </div>
  );
}
函数搜索输入(inputRef){
函数onCLick(){
//剂量和。。。
//使用ref关注输入元素
}
返回(
);
}
函数父级(道具){
函数聚焦搜索工具(){
如果(搜索元素)
searchElement.focus();
}
返回(
我的输入:searchElement=element}/>
);
}
虽然通过
focussearchement
在父级中设置的焦点工作正常,但我无法将焦点设置为
SearchInput
组件的输入


我想完成的是在
onCLick
函数中设置焦点,但我不确定这是否可行,如果可行,如何实现。

下面是一个小示例:

function SearchInput({inputRef: refCallback}) {
    let inputRef;
    function onClick(){
      inputRef.focus();
    }

    function inputRefHandler(ref){
      inputRef = ref;
      refCallback(ref);
    }

    return (
      <div>
        <div>
          <input ref={inputRefHandler}/>
        </div>
        <button onClick={onClick}>input focus</button>
      </div>
    );
}

function Parent(props) {
    let searchElement;
     function focusSearchElement() {
       if (searchElement)
         searchElement.focus();
     }

    return (
      <div>
        <button onClick={focusSearchElement}>parent focus</button>
        <div>
          my input: <SearchInput inputRef={element => searchElement = element} />
        </div>
      </div>
    );
}
函数SearchInput({inputRef:refCallback}){
让inputRef;
函数onClick(){
inputRef.focus();
}
函数inputRefHandler(ref){
inputRef=ref;
ref回调(ref);
}
返回(
输入焦点
);
}
函数父级(道具){
让搜索元素;
函数聚焦搜索工具(){
如果(搜索元素)
searchElement.focus();
}
返回(
父焦点
我的输入:searchElement=element}/>
);
}