我对注销功能的实现有疑问。
您可能会在codesandbox中看到,我的应用程序的外观如下:https://sit9d.csb.app/login
这是Logout.js代码,我想我可能会在其中编辑它:
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { setAuthedUser } from '../actions/authedUser'
class Logout extends Component {
componentDidMount() {
this.props.setAuthedUser(null)
}
render() {
return<div>Logging out...</div>
}
}
export default connect(
null,
{ setAuthedUser }
)(Logout)
这是导航栏Menu.js:
import React, { Component } from 'react'
import { NavLink } from 'react-router-dom'
import { connect } from 'react-redux'
import { Image } from 'semantic-ui-react'
class Menu extends Component {
render() {
const { users, authedUser } = this.props
const { name, avatarURL } = users[authedUser]
return (
<div className='ui fixed inverted menu'>
<div className='ui container'>
<div className='item' />
<NavLink
to='/'
exact
className='header item'
activeClassName='active'
>
<Image
src='/would-you-rather.png'
style={{ width: '50px', marginRight: '5px' }}
/>
Home
</NavLink>
<NavLink to='/add' exact className='item' activeClassName='active'>
New Question
</NavLink>
<NavLink
to='/leaderboard'
exact
className='item'
activeClassName='active'
>
Leader Board
</NavLink>
<div className='ui right floated item'>
<span style={{ marginRight: '10px' }}>Hello, {name}</span>
<img className='ui avatar image' src={avatarURL} alt='' />
</div>
<NavLink to='/logout' exact className='item' activeClassName='active'>
Logout
</NavLink>
</div>
</div>
)
}
}
const mapStateToProps = (state) => {
return { authedUser: state.authedUser, users: state.users }
}
export default connect(mapStateToProps)(Menu)
我想知道如何实现注销功能回到登录身份验证页面?
请提供任何帮助,谢谢。
致谢。
答案 0 :(得分:2)
最简单的方法是在this.props.history.push('/login')
中重置用户后立即使用componentDidMount
。
history
由Logout.js
提供给react-router-dom
,因为它是路由组件。
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { setAuthedUser } from '../actions/authedUser'
class Logout extends Component {
componentDidMount() {
this.props.setAuthedUser(null)
this.props.history.push('/login')
}
render() {
return<div>Logging out...</div>
}
}
export default connect(
null,
{ setAuthedUser }
)(Logout)