Maison > interface Web > Questions et réponses frontales > Comment implémenter la connexion et l'enregistrement dans React

Comment implémenter la connexion et l'enregistrement dans React

藏色散人
Libérer: 2023-01-05 09:55:36
original
2239 Les gens l'ont consulté

Comment implémenter la connexion et l'enregistrement dans React : 1. Construire des composants de style ; 2. Créer des composants de routage de base pour la page de connexion et d'enregistrement, avec un code tel que "import React, {Component} from 'react' ; import{PhoneLogin}. from '... {render(){...}" ; 3. Afficher la route d'enregistrement de connexion ; 4. Connectez-vous à la base de données pour implémenter le code d'enregistrement de connexion ; 5. Déterminez si l'utilisateur s'est connecté en jugeant le local stockage, et cliquez pour juger lors de la connexion.

Comment implémenter la connexion et l'enregistrement dans React

L'environnement d'exploitation de ce tutoriel : système Windows 10, React version 18.0.0, ordinateur Dell G3.

Comment mettre en œuvre la connexion et l'inscription dans React ?

react implémente simplement la logique de connexion et d'enregistrement (implémentation de la simulation localStorage, connexion à la base de données et implémentation en interrogeant la base de données)

1.

2 , le composant de routage de base de la page de connexion et d'enregistrement

import styled from 'styled-components';export const MineContainer = styled.div`
   flex:1;
`export const PhoneLogin =styled.div`
   padding:10px;
   input{
      margin:3px;
   }

`export const UserRegister = styled.div`
   padding:10px;
   input{
      margin:3px;
   }
`
Copier après la connexion

3. Affichage de l'itinéraire de connexion et d'enregistrement

import React ,{Component} from 'react';import {PhoneLogin} from './MineStyleComponent'class Login extends Component {
   render(){
      return(
         <phonelogin>
            手机号:<input><br>
            验证码:<input><br>
            <button>登录</button>
         </phonelogin>
      )
   }}export default Login;==========================================================================================import React ,{Component} from 'react';import {UserRegister} from './MineStyleComponent'class Register extends Component {
   render(){
      return(
         <userregister>
            手机号:<input><br>
            密码:<input><br>
            验证码:<input><br>
            <button>登录</button>
         </userregister>
      )
   }}export default Register;
Copier après la connexion

4. Utilisez l'accès aux données locales pour mettre simplement en œuvre le processus logique.

Comment implémenter la connexion et lenregistrement dans ReactStockage local d'une méthode d'écriture utilisateur

import React, { Component} from 'react';import {MineContainer} from './MineStyleComponent'import Login from './Login';import Register from './register';import {Route} from 'react-router-dom'class Mine extends Component {

   constructor(){
      super()
      this.state={
         loginFlag:false,//通过开关切换登录方式
      }
   }

   check = ()=>{//通过编程导航进行两个路由的切换

      if(this.state.loginFlag){
         this.props.history.push('/mine/register')
      }else{
         this.props.history.push('/mine/login')
      }

      this.setState({
         loginFlag:!this.state.loginFlag,
      })

   }
   
   render(){
      const {loginFlag} = this.state      return (
         <minecontainer>
           <route></route>
           <route></route>
           <button> { loginFlag?'用户名登录':'短信验证登录'} </button>
         </minecontainer>
      )
   }}export default Mine;
Copier après la connexion

Stockage de plusieurs méthodes d'écriture utilisateur dans localStorage

import React ,{Component} from 'react';import {UserRegister} from './MineStyleComponent'class Register extends Component {

   //本地存储一个账户的模拟登录注册写法
   //逻辑:通过判断本地存储,来确定用户是否登录过,点击登陆时进行判断

   LoginClick = () =>{

      const username = this.users.value;
      const password = this.password.value;
      let  ls_users = localStorage.getItem('users');

      if(ls_users){
         //如果ls_users存在证明已有用户注册,判断密码,用户名是否正确
         ls_users = JSON.parse(ls_users)
         
         if(ls_users.username===username&&ls_users.password===password){
            alert('登录成功')
            this.props.history.push('/home')
         }else{
            alert('用户名或登录密码输入错误')
         }

      }else{
         //没有用户注册,直接保存到本地存储
         localStorage.setItem('users',JSON.stringify({username,password}))
         this.props.history.push('/home')
      }
   }


   render(){
      return(
         <userregister>
            用户名:<input>this.users=el} /><br>
            密码:<input>this.password=el} /><br>
            验证码:<input><br>
            <button> 登录</button>
         </userregister>
      )
   }}export default Register;
Copier après la connexion

Connectez-vous à la base de données pour implémenter le code d'enregistrement de connexion

1. . Code de routage du serveur (Le serveur construit par express dans Nodejs)
import React ,{Component} from 'react';import {UserRegister} from './MineStyleComponent'class Register extends Component {

   //本地存储一个账户的模拟登录注册写法
   //逻辑:通过判断本地存储,来确定用户是否登录过,点击登陆时进行判断

   LoginClick = () =>{
      let obj = [];
      const username = this.users.value;
      const password = this.password.value;
      let  ls_users = localStorage.getItem('users');

      if(ls_users){
         //如果ls_users存在证明已有至少用户注册,
         obj = JSON.parse(ls_users)
         console.log(obj)
         
         //对本地存储数据进行便利与输入值对比
         let fg = obj.some (item => {
            if(item.username===username) return true//用户名已存在
         })

         if(fg){//fg为真找到用户名,接下里对密码判断
            //对存储数据遍历,比对用户名名与密码
            let f=false
            obj.map(item => {
               if(item.username===username&&item.password===password){
                  f=true; 
                  return f;
               }     
            })
            if(f){//查询正确可以正常登录
               alert('登录成功')
               this.props.history.push('/home')
            }else{
               alert('密码错误')
            }

         }else{//没找到对将用户保存到本地,进行自动注册
            obj.push({username,password});
            localStorage.setItem('users',JSON.stringify(obj))
            this.props.history.push('/home')
         }
        
      }else{
         //没有用户注册,直接保存到本地存储
         obj.push({username,password})
         localStorage.setItem('users',JSON.stringify(obj))
         this.props.history.push('/home')
      }
   }


   render(){
      return(
         <userregister>
            用户名:<input>this.users=el} /><br>
            密码:<input>this.password=el} /><br>
            验证码:<input><br>
            <button> 登录</button>
         </userregister>
      )
   }}export default Register;
Copier après la connexion
3. La page d'accueil affiche le code d'opération

const { userSchema } = require('./schema');const { userModel } = require ('./module');//连接数据库const connect = require ('./connect');connect.init();//数据库操作const db = {
   user: {
      add(data){//数据添加
         const user = new userModel(data)
         user.save()
      },

      query(){//数据库查询,通过promise异步函数将结果返回出去
         return new Promise( (resolve,reject)=>{
            userModel.find( {},(err,docs) => {//查询数据库所有
               if(err) console.log(err) 
               resolve(docs)//将查询结果返回出去
            })
         })
      }

   }}module.exports = {
   user: db.user}
Copier après la connexion
. Apprentissage recommandé : "
Tutoriel vidéo React"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal