javascript - React:如何在输入的 onChange 事件上更改路由
问题描述
<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)
}
我在导航中导入了搜索组件。我想在输入时进入搜索组件。
解决方案
import {Redirect} from "react-router-dom";
constructor(props) {
super(props);
this.state = {
redirect: null,
}
}
handleChange=(){
this.setState({
redirect: "/search/22"
});
}
render() {
if (this.state.redirect) {
return <Redirect to={this.state.redirect} />
}
return (
<div>
<input type="search" value={searchInput} onChange={handleChange} placeholder="Search..." />
</div>
);
}
推荐阅读
- function - C++ 中的套接字编程问题
- python - Vigenere Cipher 用于带有空格的句子
- sql - 连接后从两个差异表中过滤列
- angular - 在构建操作中使用 Github Actions 机密是否安全
- .net - 用于 JSON 自动的 SQKATA
- reactjs - 如何使用不同的支付选项在 React 中实施 PayPal?
- python-3.x - 拒绝主 -> 主(预接收挂钩被拒绝)
- scala - 使用火花流解析事件中心复杂数组类型消息
- python - 我的 Pandas 错误地从 .xlsx 文件中读取值
- android-studio - Android Firebase Auth Google failed code=10 Only on Phone