我试图在我的 Header 组件中的搜索输入上使用 ref ,这不是我的 ResultsList 组件的高阶组件。我想将焦点放在来自 ResultsList 组件的 Header 的搜索输入上。标题很直观,因为我所要做的就是下面。如果我想在 ResultsList 中创建一个专注于 Header 中的输入元素的按钮怎么办?我如何通过这个参考?我已阅读有关 forwardRef 的信息,但我没有将我的 ref 转发。ResultsList 不是 Header 的子级。
import React, { useState, useRef } from 'react';
import { useHistory } from 'react-router-dom';
const Header = () => {
const searchInput = useRef(null);
const history = useHistory();
const [searchValue, setSearchValue] = useState(keyword);
function handleChange(event) {
setSearchValue(event.target.value);
}
function handleSearch(event) {
event.preventDefault();
if(searchValue) {
history.push(`/search/${searchValue}`);
} else {
searchInput.current.focus();
}
}
return (
<form onSubmit={handleSearch} role="search">
<input
value={searchValue}
onChange={handleChange}
className="HeaderSearch__input"
id="header-search-input"
placeholder="Search a repository"
ref={searchInput}>
</input>
</form>
);
}
export default Header;
我的 App 组件看起来像这样
import React from 'react';
import Header from './Header';
import ResultsList from './ResultsList';
function App() {
return (
<>
<Header />
<ResultsList />
</>
);
}
export default App;