使用 Material SearchBar 导航到另一个页面
Navigate to another page using Material SearchBar
我在我的应用程序 header 中使用 Material SearchBar,并尝试导航到本地主机 onRequestSearch 上的页面“/search”。搜索栏本身的代码很简单:
<SearchBar
onChange = {() => console.log('onChange')}
onRequestSearch = {() => this.setRedirect()}
style = {{ margin: '0 auto', maxWidth:800}}/>
现在,我已经尝试通过多种方式实现 setRedirect 函数,但都没有成功。首先,我简单地尝试了:
setRedirect() {
this.props.history.push('/search');
}
但这给出了一个错误 Undefined is not an object (evaluating this.props.history)。我确实在我的主应用程序中为“/搜索”页面设置了路由。
我也尝试使用重定向:
constructor(props) {
super(props);
this.state = {
redirect = false
}
}
setRedirect() {
this.setState({
redirect: true
}
}
在渲染方法中:
render() {
if(this.state.redirect) {
return (
<Router>
<div>
<Redirect push to="/search"/>
<Route path="/search" exact strict component={Search}/>
</div>
</Router>
);
}
else {
// return other stuff
}
}
当我在搜索栏中输入内容并按回车键时,这只会导致整个页面变成空白。浏览器中的地址也不会更改为“/search”。
不知道我做错了什么。一旦用户在搜索栏中输入文本并按回车键,只需尝试导航到另一个页面。任何建议将不胜感激。先感谢您!
尝试添加 withRouter HoC,然后使用 this.props.history.push()
再试一次
import { withRouter } from 'react-router-dom'
...
export default withRouter(MyComponent);
我在我的应用程序 header 中使用 Material SearchBar,并尝试导航到本地主机 onRequestSearch 上的页面“/search”。搜索栏本身的代码很简单:
<SearchBar
onChange = {() => console.log('onChange')}
onRequestSearch = {() => this.setRedirect()}
style = {{ margin: '0 auto', maxWidth:800}}/>
现在,我已经尝试通过多种方式实现 setRedirect 函数,但都没有成功。首先,我简单地尝试了:
setRedirect() {
this.props.history.push('/search');
}
但这给出了一个错误 Undefined is not an object (evaluating this.props.history)。我确实在我的主应用程序中为“/搜索”页面设置了路由。 我也尝试使用重定向:
constructor(props) {
super(props);
this.state = {
redirect = false
}
}
setRedirect() {
this.setState({
redirect: true
}
}
在渲染方法中:
render() {
if(this.state.redirect) {
return (
<Router>
<div>
<Redirect push to="/search"/>
<Route path="/search" exact strict component={Search}/>
</div>
</Router>
);
}
else {
// return other stuff
}
}
当我在搜索栏中输入内容并按回车键时,这只会导致整个页面变成空白。浏览器中的地址也不会更改为“/search”。 不知道我做错了什么。一旦用户在搜索栏中输入文本并按回车键,只需尝试导航到另一个页面。任何建议将不胜感激。先感谢您!
尝试添加 withRouter HoC,然后使用 this.props.history.push()
再试一次import { withRouter } from 'react-router-dom'
...
export default withRouter(MyComponent);