react-cookies使用实现记住密码

1.下载 

npm install  react-cookies --save -g

2.引入

import cookie from "react-cookies";

3.操作 

let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//设置失效时间 cookie.save("remember", values, { path: "/", expires: inFifteenMinutes }); //存入cookie

// {path:'/'}意思是所有页面都能用这个cookie

cookie.load("remember");  //导入

cookie.remove("remember"); //移除

4.记住密码

用户点击单选框勾选记住密码后,变量 remember = true,提交表单时存入cookie。当页面重新加载后,利用load导出cookie,将其携带的value赋值给input的初始值。(这里用的antd组件,表单初始值为initialValues=obj)当 remember = false,使用remove移除。

5.复盘

1.设置失效时间,否则会话结束cookie自动移除。

2.注意变量的类型,否则容易报错如:Assignment to constant variable.

3.利用if和全局变量进行动态执行。若此时web本地拥有cookie,我们想导入load很可能无法成功导入。react无法识别load(也有可能是cookie没存入),后续对全局变量赋空值(以免无cookie时报错),判断load的值是否存在,若存在则赋值给全局变量,改变表单初始值。

4.避免使用state,可能出现无限循环。若load存在,调用setData修改state,此时可能引发无限递归,条件一直成立,每次执行重新渲染组件,如此往复。

6.完整代码

import { Link, useNavigate } from "react-router-dom";
import cookie from "react-cookies";
import { LockOutlined, UserOutlined } from "@ant-design/icons";
import { Button, Checkbox, Form, Input, message } from "antd";
import styles from "./index.module.css";

function Account() {
  const navigate = useNavigate();
  let cache = "";
  if (cookie.load("remember")) {
    cache = cookie.load("remember");
    console.log("in", cache);
  }
  const onFinish = (values) => {
    if (values.remember) {
      // 保存cookie
      // {path:'/'}意思是所有页面都能用这个cookie
      let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);
      cookie.save("remember", values, { path: "/", expires: inFifteenMinutes });
      cache = cookie.load("remember");
      console.log("load", cache);
    } else {
      cookie.remove("remember");
    }
    console.log("Received values of form: ", values);
    // ajax登录
    message.info("登录成功");
    //navigate("/system");
  };
  return (
    <div>
      <Form
        name="normal_login"
        className={styles.loginForm}
        initialValues={{
          remember: true,
          account: cache.account,
          password: cache.password,
        }}
        onFinish={onFinish}
      >
        <Form.Item
          name="account"
          rules={[
            {
              required: true,
              message: "请输入用户名或邮箱!",
            },
          ]}
        >
          <Input prefix={<UserOutlined />} placeholder="用户名/邮箱" />
        </Form.Item>
        <Form.Item
          name="password"
          rules={[
            {
              required: true,
              message: "请输入密码!",
            },
          ]}
        >
          <Input.Password
            prefix={<LockOutlined />}
            type="password"
            placeholder="密码"
          />
        </Form.Item>
        <Form.Item>
          <Form.Item name="remember" valuePropName="checked" noStyle>
            <Checkbox>记住密码</Checkbox>
          </Form.Item>
          <Link to="/login/forget" style={{ float: "right" }}>
            忘记密码
          </Link>
        </Form.Item>
        <Form.Item>
          <div>
            <Link to="/login/authcode">验证码登录</Link>
          </div>
          <Button
            type="primary"
            htmlType="submit"
            className={styles.loginFormButton}
          >
            登录
          </Button>
          <div>
            还没有账号?<Link to="/login/register">注册</Link>
          </div>
        </Form.Item>
      </Form>
    </div>
  );
}

export default Account;

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React-cookies是一个用于在React应用中操作cookie的库。你可以使用npm或yarn安装它,并通过import语句引入它。使用cookie.save()方法可以存储cookie,cookie.load()方法可以获取cookie的值,cookie.remove()方法可以删除cookie。\[1\] React-cookies使用非常方便,特别是在处理国际化等场景下。你可以将语言类型存储在cookie中,并在需要的时候进行读取和删除。通过设置{ path: '/' },可以使得cookie在所有页面都可以访问到。\[2\]\[3\] 在一个具体的例子中,当用户登录成功时,可以将用户信息保存在cookie中。通过调用cookie.save()方法,将用户信息存储在名为"userInfo"的cookie中,并设置了过期时间为15分钟。\[3\] 总之,React-cookies是一个方便的库,可以帮助你在React应用中轻松地操作cookie。 #### 引用[.reference_title] - *1* [react 使用cookie react-cookies](https://blog.csdn.net/weixin_45774972/article/details/119253199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [react-cookie一个方便于我们操作cookie的react库](https://blog.csdn.net/sadasddpk/article/details/122869257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [react如何在项目中使用cookie ?](https://blog.csdn.net/m0_59296903/article/details/124195556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值