Javascript 将用户重定向到React中的其他路径
我正在构建一个web应用程序。用户可以从Firebase中读取有关对象的一些信息。问题是,用户也可以使用Android应用程序登录,如果Firebase上的属性发生更改,则需要将其从web应用程序的当前视图中踢出。我知道怎么做这件事。代码如下:Javascript 将用户重定向到React中的其他路径,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我正在构建一个web应用程序。用户可以从Firebase中读取有关对象的一些信息。问题是,用户也可以使用Android应用程序登录,如果Firebase上的属性发生更改,则需要将其从web应用程序的当前视图中踢出。我知道怎么做这件事。代码如下: var AssignedWordRef = firebase.database().ref('Users').child(currentUser.uid).child('assignedWork'); AssignedWordRef.on('value'
var AssignedWordRef = firebase.database().ref('Users').child(currentUser.uid).child('assignedWork');
AssignedWordRef.on('value', snapshot => {
var assignmentId = snapshot.val();
if (assignmentId === null) {
console.log('Redirect right here mate');
}
});
这是有效的。这是控制台日志记录,一切都很好。但问题是我需要将用户重定向到不同的路径。到目前为止,我使用了一个窗口。location
,但这不是一个好主意。以下是我的路线
:
<Switch>
<Route exact path="/assignments" render={
() => (firebase.auth().currentUser === null ?
<Redirect to='/'/> : this.state.assignedWord === undefined ?
<AssignmentsComponent/> :
<Redirect to={'/assignment/' + this.state.assignedWord}/>)
}/>
<Route exact path='/assignment/:id' render={
props => (
firebase.auth().currentUser === null ?
<Redirect to='/'/> : <CheckIfHasCurrentTasksComponent {...props}/>)
}/>
<Route exact path='/userPanel' render={
() => (firebase.auth().currentUser === null ?
<Redirect to='/'/> : <UserPannelComponent/>)
}/>
<Route exact path="/" component={HomeComponent}/>
</Switch>
(firebase.auth().currentUser==null?
:this.state.assignedWord==未定义?
:
)
}/>
(
firebase.auth().currentUser==null?
: )
}/>
(firebase.auth().currentUser==null?
: )
}/>
我尝试返回
控制台.log所在的
,但没有成功
返回
也没有帮助。我猜我必须把它放在路线上,但我不知道怎么放。你可以试试这个.props.history.push('/')代码>而不是使用
希望这能奏效 将push与this.props.history一起使用,或者只使用重定向。这是(请记住使用此.setState)执行新渲染的示例代码:
class MyComponent extends React.Component {
state = {
redirect: false
}
handleSubmit () {
axios.post(/**/)
.then(() => this.setState({ redirect: true }));
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/somewhere'/>;
}
return <RenderYourForm/>;
}
类MyComponent扩展了React.Component{
状态={
重定向:false
}
handleSubmit(){
axios.post(/**/)
.then(()=>this.setState({redirect:true}));
}
渲染(){
const{redirect}=this.state;
如果(重定向){
返回;
}
返回;
}
可能重复您尝试的此.props.history.push(位置)
?您可以使用push或执行类似于此答案中的重定向@PaoloDell'Aguzzo太完美了!谢谢!是否将其添加为答案?您可以使用push或执行类似于此答案中的重定向