vue3使用时遇到的问题

使用elementplus遇到的问题

1.el-form中input无法输入

问题描述:在el-form中的el-input中输入数字或字母时出现卡顿,输入不进去的现象
问题原因:el-form的ref和model的名称写成了一样的单词
问题解决:两个不能一样
在这里插入图片描述

2.input去除边框

问题描述:el-input的边框使用border:none无法去除
问题原因:element plus和element的el-input不太一样,不止需要border,还需要使用box-shadow: none
问题解决:

:deep(.el-input__wrapper) {
  box-shadow: none !important;
  border-radius: 0;
}
:deep(.el-input) {
  box-shadow: none !important;
  border-radius: 0;
}

在这里插入图片描述

3.去除el-input验证失败后的红框

问题描述:el-input验证失败后鼠标移上去还会出现红框
问题解决:

:deep(.el-form-item.is-error .el-input__wrapper.is-focus) {
  box-shadow: none !important;
}

在这里插入图片描述

4.el-form表单验证

由于使用vue+js,导致表单验证不会用,哈哈哈,正在摸索vue3,先用js把vue2项目迁移过来后再使用ts

<el-form
   ref="loginFormRef"
   :model="loginForm"
   :rules="loginRules"
   class="login-form"
>
import { ref, computed, unref } from 'vue';
const loginFormRef = ref(null)
const handleLogin = async () => {
  const form = unref(loginFormRef)
  if (!form) return
  await form.validate((valid, fields) => {
    console.log(valid);
    if (valid) {
      console.log('submit!')
    } else {
      console.log('error submit!', fields)
    }
  })
}

vue3遇到的问题

1.vue设置代理后查看真实接口调用的ip地址

    proxy: {
      // 选项写法
      '/api': {
        target: 'http://xxx.xxx.xxx.xxx:xxxx',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
        bypass (req, res, options) {
          const proxyUrl = new URL(options.rewrite(req.url) || '', (options.target))?.href || '';
          console.log(proxyUrl);
          req.headers["x-req-proxyUrl"] = proxyUrl;
          res.setHeader("x-res-proxyUrl", proxyUrl)
        }
      },
    },

2.使用动态路由后刷新页面会出现找不到路径导致的空白页面或404

解决方法:

  1. 获取动态路由使用await而不是.then
  2. 获取前加一个判断:
import router from './router/index';

const whiteList = ['/login']; // no redirect whitelist
let hasRoles = true;

router.beforeEach(async (to, from, next) => {
  if (getItem('token')) {
    if (to.path === '/login') {
      // 1.已经登陆跳转到首页
      next({ path: '/' });
    } else {
      const userStore = useUserStore();
      const permissionStore = usePermissionStore();
      try {
        if (userStore.sysUser === '') {
          await userStore.getUserInfo();
        }
        const accessRoutes = await permissionStore.generateRoutes();
        if (hasRoles) {
          accessRoutes.forEach((route) => {
            router.addRoute(route);
          });
          hasRoles = false;
          next({ ...to, replace: true });
        } else {
          next();
        }
      } catch (error) {
        // 移除 token 并跳转登录页
        await userStore.logout();
        next(`/login?redirect=${to.path}`);
      }
    }
  } else {
    //  2.未登录,只能去登录页面
    if (whiteList.indexOf(to.path) !== -1) {
      next();
    } else {
      next(`/login?redirect=${to.path}`);
    }
  }
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别出声~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值