react 飞冰 账号密码输入保存并加载

下午 3个小时 有点笨啊
不包含注册时的判断
有瑕疵 回头再修改吧

import * as React from 'react';
import {Card, Select, Button, Checkbox, Input, Dialog} from '@alifd/next';
import {useEffect, useState} from "react";

export default function MergeCellTable(props) {
  const [userInformation, setUserInformation] = useState({userName: '', passWord: '', flag: false})
  useEffect(() => {

  }, []);
  // 设置dialog弹出框
  const [dialogValue,setDialogValue] = useState(false);
  //  从本地存储中取出数据
  const jsonData = JSON.parse(window.localStorage.getItem('userArr'));
  // 数组初始赋值 如果有数据就赋值
  let userArr = jsonData ? jsonData : false;
  const userNameData = userArr ? userArr.map((item, i) => {
    console.log(item.userName);
    console.log(i);
    const name = item.userName;
    console.log(name)
    return {value: name, index: i};
  }) : [{}]

  // 选择事件进行判断是选择还是输入进行不同操作
  const onChange = (value, actionType, item, index) => {
    if (actionType === 'itemClick') {
      setUserInformation({userName: item.value, passWord: userArr[item.index].passWord, flag: true})
    } else {
      setUserInformation({...userInformation, userName: value})
    }
    if (item==='clear'){
      setDialogValue(true);
    }
  };
  // 存储账号密码
  const getPassWord = () => {
    // 判断是否重复
    if (JSON.stringify(userArr).indexOf(JSON.stringify(userInformation)) == -1) {
      userArr.push(userInformation);
      window.localStorage.setItem('userArr', JSON.stringify(userArr));
    }
  }

  return (
    <Card free>
      <div >
        <span>账号:</span>
        <Select.AutoComplete
          value={userInformation.userName}
          placeholder='请输入账号'
          onChange={onChange}
          dataSource={userNameData}
          hasClear
          style={{width:'200px'}}
        />
      </div>
      <div style={{marginTop:'10px'}}>
        <span>密码:</span>
        <Input.Password
          // type='password'
          style={{width:'200px'}}
          value={userInformation.passWord}
          placeholder='请输入密码'
          onChange={(value) => {
            setUserInformation({...userInformation, passWord: value})
          }}/></div>
      <div>
        <Checkbox
          checked={userInformation.flag}
          onChange={(value) => {
            setUserInformation({...userInformation, flag: value})
          }}>
          记住密码
        </Checkbox>
      </div>

      <div>
        <Button
          onClick={() => {
            if (userInformation.flag) {
              getPassWord();
            }
          }}
        >登录</Button>
      </div>
      <div>
        <Dialog
          visible={dialogValue}
          title={'是否删除该账号登录信息'}
          style={{width:'200px'}}
          onClose={()=>{
            setDialogValue(false);
          }}
          onCancel={()=>{
            setDialogValue(false);
          }}
          onOk={()=>{
            setDialogValue(false);
          }}
        >

        </Dialog>
      </div>
    </Card>
  );
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例: 首先,我们需要安装reactreact-dom: ``` npm install react react-dom ``` 然后,我们创建一个名为`Login`的组件和一个名为`Register`的组件,分别用于登录和注册。 在`Login`组件中,我们需要有两个输入框,分别用于输入账号和密码,以及一个按钮用于提交登录信息。在`Register`组件中,我们需要有三个输入框,用于输入用户名、密码和确认密码,以及一个按钮用于提交注册信息。 下面是代码示例: ```javascript import React, { useState } from 'react'; function Login() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); function handleUsernameChange(event) { setUsername(event.target.value); } function handlePasswordChange(event) { setPassword(event.target.value); } function handleSubmit(event) { event.preventDefault(); // TODO: 提交登录信息 } return ( <form onSubmit={handleSubmit}> <label> 账号: <input type="text" value={username} onChange={handleUsernameChange} /> </label> <br /> <label> 密码: <input type="password" value={password} onChange={handlePasswordChange} /> </label> <br /> <button type="submit">登录</button> </form> ); } function Register() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); function handleUsernameChange(event) { setUsername(event.target.value); } function handlePasswordChange(event) { setPassword(event.target.value); } function handleConfirmPasswordChange(event) { setConfirmPassword(event.target.value); } function handleSubmit(event) { event.preventDefault(); // TODO: 提交注册信息 } return ( <form onSubmit={handleSubmit}> <label> 用户名: <input type="text" value={username} onChange={handleUsernameChange} /> </label> <br /> <label> 密码: <input type="password" value={password} onChange={handlePasswordChange} /> </label> <br /> <label> 确认密码: <input type="password" value={confirmPassword} onChange={handleConfirmPasswordChange} /> </label> <br /> <button type="submit">注册</button> </form> ); } export default function App() { return ( <> <h1>账号密码登录注册</h1> <Login /> <br /> <Register /> </> ); } ``` 在上面的代码中,我们使用了`useState`来定义了多个状态。`handleUsernameChange`、`handlePasswordChange`和`handleConfirmPasswordChange`分别用于处理输入框的变化。`handleSubmit`用于提交表单信息,但是我们还没有实现提交信息的功能。 最后,我们将`Login`组件和`Register`组件渲染到了`App`组件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值