我正在尝试在具有多个页面的应用程序中创建一个搜索页面,我使用 react router v5。
我的问题如下,我想在文本字段为空时返回上一页,否则如果输入字段中有条目,我想返回搜索页面('/search')
我预先感谢您的帮助和回答。
所以我使用了 goBack 和 push props。但是即使字段为空也无法返回上一页
我的组件 Routes.js
const Routes = (props) => {
return (
<div>
<Route exact path="/" component={Home} />
<Route
exact
path='/search'
component={() => <Search query={props.text} />}
/>
<Route path="/film/:id" component={MovieDetail} />
<Route path="/FavorisList" component={WatchList} />
<Route path="/search/:search" component={Search} />
<Route path="*" component={NotFound} />
</div>
)}
我的组件 SearchBar.js
class SearchBar extends React.Component {
constructor(props) {
super(props);
this.state = {
inputValue:'',
};
}
handleChange = (event) => {
if(event.target.value === '') {
this.props.history.goBack()
return;
}
if(event.target.value.length){
this.props.history.push("/search")
this.search(event.target.value)
}
}
search = (query) => {
//search results retrieved with redux
this.props.applyInitialResult(query, 1)
}
render() {
return (
<div>
<input
type="text"
value={this.state.inputValue}
placeholder="Search movie..."
className={style.field}
onChange={this.handleChange.bind(this)}
/>
</div>
);
}
export default SearchBar;
组件 App.js
class App extends React.Component {
render(){
return (
<div>
<BrowserRouter>
<NavBar />
<Routes/>
</BrowserRouter>
</div>
);
}
}
export default App;