Предположим, есть такой маршрут, как <base-url>/search
маршрут определяется как
import { Link, BrowserRouter as Router, Route } from "react-router-dom";
import { useHistory, useLocation } from "react-router-dom";
...
<Router>
...
<Route path="/search/:searchInput">
<Search />
</Route>
</Router>
Существует также компонент текстового поля, который использует хук useContext
и contextprovider, а onChange
он сохраняет текущее значение ввода текстового поля, которое используется компонентом <Search/>
.
как вы меняете имя пути в реальном времени на имя ввода поиска? если текстовое поле пустое, по умолчанию должно быть <base-url>/search
например, если вы наберете «lil» в текстовом поле, текущий маршрут или имя пути будут перенаправлены/отображены одновременно на <base-url>/search/lil
если в текстовом поле есть несколько слов или пробелов, таких как «маленький красный», текущий путь будет немедленно отображаться как <base-url>/search/lil%20red
мне нужно использовать реакцию <Link/>
?
связанный поток Как обновить URL-адрес страница с использованием поля ввода?, react-router - как изменить URL-адрес
ИЗМЕНИТЬ
import SearchContext from "../Search/context"
const Search = () => {
const context = useContext(SearchContext)
// context.searchInput is the value of the textbox provided by context.provider
useEffect(() => {}, [])
return (...)
}
export default Search
Link
полезен, когда вы хотите изменить маршрут на основе того, что пользователь щелкнул что-то, если вы хотите изменить маршрут программно, вы можете использоватьuseHistory
, а затем использовать метод объектов историиpush
илиreplace
для изменения маршрутов. - person Jacob Smit   schedule 31.05.2021withRouter
,useHistory
крючке - person Ridhwaan Shakeel   schedule 31.05.2021