登录模块(自动登录)

render里面要直接跳到某个页面要用return <Redirect to="/" />   不用this.props.history.replace('/');  因为render里面必定return

this.props.history.replace用在点击回调事件里面

1.admin.js里面

<script>
   render() {
        //读取保存的user ,如果不存在直接跳转到登录页面
        const user = JSON.parse(localStorage.getItem('user_key') || '{}')
        if (!user._id) {
            // this.props.history.replace('/login') //事件回调中使用
            return <Redirect to="/login" />
        }

</script>

2.login.js里面

<script>


 if(res.code === '0000'){
              //跳转到管理页面
              const user = res.data
              localStorage.setItem('user_key',JSON.stringify(user))
             //storageUtils.saveUser(user) 改进版
this.props.history.replace('/')
              message.success('登录成功')
            }else{
              message.error(res.msg) //res.msg后端返回的信息
            }

render() {
      const user = JSON.parse(localStorage.getItem('user_key') || '{}')
        //改进版:const user = storageUtils.getUser()
if (user._id) {
          return <Redirect to="/" />
      }


</script>

封装保存用户,读取用户,删除用户为方法

<script>


const USER_KEY = 'user_key'
export default {
    //返回user对象,如果没有返回{}
    getUser() {
        return JSON.parse(localStorage.getItem(USER_KEY)||'{}')
    },
    //保存user
    saveUser(user) {
        localStorage.setItem(USER_KEY,JSON.stringify(user))
    },
    //删除user
    removeUser() {
        localStorage.removeItem(USER_KEY)
    }
}
    


</script>

猜你喜欢

转载自www.cnblogs.com/lucy-xyy/p/11830218.html