register.vue改写成这样了。发现页面没怎么实现,跟login页面流程走的。

来源:3-3 注册页面开发及路由串联复习

Vigorous阿炎

2020-12-27 11:52:09

register.vue改写成这样了。发现页面没怎么实现,跟login页面流程走的。

<template>

    <div class="wrapper">

        <img src="http://www.dell-lee.com/imgs/vue3/user.png" alt="">

        <div class="wrapper__input">

            <input class="wrapper__input__content"

            v-model="data.username"

            placeholder="请输入用户名/手机号">

        </div> 

        <div class="wrapper__input">

            <input class="wrapper__input__content"

            v-model="data.userpassword"

            placeholder="请输入密码" type="password">

        </div> 

        <div class="wrapper__input">

            <input class="wrapper__input__content"

             placeholder="请确认密码" type="password">

        </div> 

        <div class="wrapper__register-button" @click="handleRegister">注册</div>

        <router-link :to='{name:"Login"}'>

            <div class="wrapper__register-link">已有账号去登入</div>

        </router-link>

    </div>

</template>


<script>

import axios from 'axios';

import { useRoute } from 'vue-router'

import { reactive } from 'vue';

// 引入路由其他功能实现点击直接跳转不用输入/home

export default {

  name:'Register',

  setup(){

      const data=reactive({

        username:'',

        password:''

      })

      const router=useRoute();

      const handleRegister=()=>{

        axios.post('https://www.fastmock.site/mock/ae8e9031947a302fed5f92425995aa19/jd/api/userregister',{

        username: data.username,

        password: data.password

        }).then(()=>{

        alert('注册成功')

        router.push({name:'Login'})

        }).catch(()=>{

            alert('注册失败')

        })

         

      }

      return{handleRegister,data}

  }

}

</script>


<style lang="scss" scoped>

.wrapper{

    positionabsolute;

    top0;

    left0;

    right0;

    bottom0;

    margin-top50%;

    img{

      displayblock;

      margin0 auto .4rem auto;

      width.66rem;

      height.66rem;  

    }

    .wrapper__input{

        height.48rem;

        margin0 .4rem .16rem .4rem;

        padding0 .16rem;

        background#f9f9f9;

        border: ipx solid rgba(0,0,0,0.10);

        border-radius6px;

        &__content{

            width100%;

            height.48rem;

            bordernone;

            backgroundnone;

            outlinenone;

            font-size.16rem;

            &::placeholder{

                 color#777;

            }

        }

    }

    .wrapper__register-button{

        margin.32rem .4rem .16rem .4rem;

        background#0091ff;

        box-shadow0 .04rem .08rem 0 rgba(0,145,255,0.32);

        border-radius.04rem;

        colorwhite;

        line-height.48rem;

        font-size.16rem;

        text-aligncenter;

    }

    .wrapper__register-link{

        text-aligncenter;

        font-size.16rem;

        color#777;

    }

}

</style>


router中index.js页面我没操作

import { createRouter, createWebHashHistory } from 'vue-router'

// 引入两个页面用于路由路径展示

import Home from '../views/home/Home'

import Login from '../views/login/Login'

import Register from '../views/register/Register'

const routes = [

{

  path: '/',

  name: 'Home',

  component: Home

},

{

  path: '/register',

  name: 'Register',

  component: Register,

  beforeEnter(to,from,next){

    const isLogin=localStorage.isLogin;

    if(isLogin){

      next({name:'Home'})

    }else{ next() }

  }

},

{

  path: '/login',

  name: 'Login',

  component: Login,

  // 此处实现的是用户已经登入了就没必要再来到login这个页面了直接回到home页面

  beforeEnter(to,from,next){

    const isLogin=localStorage.isLogin;

    if(isLogin){

      next({name:'Home'})

    }else{ next() }

    console.log(to,from)

  }

},

  // {

  //   path: '/about',

  //   name: 'About',

  //   // route level code-splitting

  //   // this generates a separate chunk (about.[hash].js) for this route

  //   // which is lazy-loaded when the route is visited.

  //   component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')

  // }

]


const router = createRouter({

  history: createWebHashHistory(),

  routes

})

// 设置登入密码页面跳转功能

router.beforeEach((to,from,next)=>{

  // 在本地存储中添加访问Home功能

  const isLogin=localStorage.isLogin;

  // 此处实现的是你访问任何路径都只会跳转到Login页面

  if(!isLogin &&( to.name!=="Login"&&to.name!=='Register')){

    next({name:'Login'})

  }else{

    // next()表示当前页面

    next();

  }

})

export default router





在这里输入代码,可通过选择【代码语言】突出显示

写回答

3回答

好帮手慕言

2020-12-27

同学你好,相似的问题在同学的另一个提问中回复了,快去查看吧,链接:https://class.imooc.com/course/qadetail/271183

祝学习愉快~

0

好帮手慕言

2020-12-27

同学你好,解答如下:
1、不能跳转是因为少写了一个字母r,正确的写法如下:
http://img.mukewang.com/climg/5fe82e8d09b7611104800077.jpg

http://img.mukewang.com/climg/5fe82e9909c53db103490066.jpg

2、老师用isLogin来记录是否登录,登录之后可以跳转到首页。注册这里也用到了,如下:

http://img.mukewang.com/climg/5fe83019092285a407070264.jpg

目前,同学对整个项目还不是很熟悉,建议按照老师的讲解进行学习,跟着老师的思路走跟容易理解,有了问题同学也好排查。

祝学习愉快~

0
higorous阿炎
hp>http://img.mukewang.com/climg/5fe83a410993b73605940553.jpg

h020-12-27
共2条回复

Vigorous阿炎

提问者

2020-12-27

这里点击注册效果没实现跳转到login页面上。  我没利用到const isLogin=localStorage.isLogin;它的作用就是在本地存放一个isLogin,存放了又咋样呢? 注册页面需要用到它吗?被这个搞糊涂了

0

0 学习 · 15276 问题

查看课程