【发布时间】:2021-08-20 16:47:43
【问题描述】:
每当我在输入字段中输入文本并将输入值传递给<Search /> 组件路由时,我都想更改路由。这是我的输入字段。
<input type="search" value={searchInput} onChange={handleChange} placeholder="Search..." />
这是我创建的路线。
<Route path="/search/:searchInput">
<Search />
</Route>
我已经处理了输入值,但是当我进入输入框时,我似乎不知道如何更改组件。你能帮我么。我也想将输入值传递给路由。
const [searchInput, setSearchInput] = useState("")
const handleChange = (e) => {
e.preventDefault();
setSearchInput(e.target.value)
}
这是我的导航组件:
const Navigation = () => {
let history = createHashHistory();
const [searchInput, setSearchInput] = useState("")
const handleChange = (e) => {
e.preventDefault();
setSearchInput(e.target.value)
}
useEffect(() => {
const params = new URLSearchParams();
if (searchInput) {
params.append("query", searchInput);
} else {
params.delete("query");
}
history.push({ search: params.toString() });
}, [searchInput, history]);
return (
<Router>
<div className='navigation'>
<div className="right-content">
<div className="search">
<img style={{ padding: "2px" }} src={search} alt="search" />
<input type="search" value={searchInput} onChange={handleChange} placeholder="Search..." />
</div>
</div>
</div>
<Switch>
<Route path="/search" component={Search}>
</Route>
</Switch>
</Router>
)
}
export default Navigation
这是我的搜索组件:
const Search = () => {
const value = new URLSearchParams(window.location.search).get("query");
console.log(value)
}
我在导航中导入了搜索组件。我想在输入时进入搜索组件。
【问题讨论】:
-
你的输入框在哪里?
-
@Shyam 它在我的导航组件中。这是在路由器中。我想将输入值字段从导航组件传递到搜索组件。
标签: javascript reactjs ecmascript-6 react-router react-hooks