当前位置: 首页 > article >正文

【前端】项目中遇到的问题汇总(长期更新)

一、联调交互类

1、出现一个数据在当前页面进行了修改,另外一个页面的同一数据并未同步更改

当前的数据经过调用接口修改更新以后,if(code == 200) 将当前数据存入store.dispatch, 然后另一个地方获取该数据,直接获取存入的数据,这样就可以同步显示了

let XXX=computed(() => { return store.getters.***}        //直接XXX.数据拿到就是同步的

2、给菜单项加权限,不显示管理员独有的菜单项

利用filter来传,但是不能直接在菜单的数组使用,这样会出现管理员打开页面没有该菜单项,需要二次刷新页面才出现,后也尝试在onMounted里写,结果仍需要二次刷新才出现

最后的解决方法1:

//template里传MenuList
let managerMenu= computed(() => {
  return store.getters.managerMenu;
});

//过滤掉管理员的菜单项,if里的条件看接口怎么定义、怎么存数据的
const menu = [{……}];
const menuList = computed(() => {
    if(managerMenu.value.length == 0) {
        return menu.fliter((item) => {
            return item.path != "XXX";
        });
    }
    else return menu
});

方法2:

//menu里不放管理员的菜单项
const menu = [{……}];

const menuList = computed(() => {
    if(managerMenu.value?.length > 0) {
        return [...menu, ...[{menuName: XXX, menPath:XXX,……}] ];
    }
    else return menu
});

3、路由跳转到某个页面,并显示某个标签

// 1、先设置对应的路由进行跳转
router.push("/" + item?.menuPath);

// 2、跳转点击的菜单项XXX
if(item.menuName == XXX) {
    store.dispatch("app/menu", "***");
}

//push是跳转当前页面,resolve+window.open则是跳转新页面

//push支持query和params,resolve只支持query,若没用query传参,也可以用localStorage
const routePath = router.resolve({path:XXX, query:XXX,});
window.open(routePath.href, "_blank");
localStorage.setItem('a', 1);

4、为简化代码,调多个接口可用三目运算符写入一个函数

const xxParams = ref({……})
const getList = async () => {
const { code, data} = await API.XXX[xxId ? "methodAPI1" : "methodAPI2"](xxParams.value);
if(code == 200) {……}

5、使用ElementUI的无线滚动加载 v-infinite-scroll,出现一直可以滚动的情况

默认情况下,infinite-scroll-disabled是false

方法1:可以在v-infinite-scroll="loadMore"的loadMore方法中限制达到列表长度就return;

方法2:

// 标签里写infinite-scroll-disabled="disabled"
<p v-if="loading">加载中...</p>
<p v-if="noMore">没有更多了</p>

const loading= ref(false)
const loadMore = () => {loading.value = true; ……}
const noMore= computed(() => return list.length >=20)    //eg:表长度限制
const disabled = computed(() => return loading || noMore

 

二、CSS样式类

1、兄弟div盒子实现并排

1、设置其父容器盒子的样式为 display: flex; (常用)

2、两个盒子都用float:left,再用定位调整。(脱离文档流)

2、多个兄弟盒子设置样式简单方式

如果使用v-for遍历,可以利用index和个数n,用三目运算符来写样式:

        :style="marginRight: (index+1) % n == 0 ? '0' : '5px' "

3、用el-input写登录输入框出现下边框消失

方法1:

        先看样式里面有没有设置相关样式,比如我遇到的问题就是设置了.el-input__wrapper的padding,这个时候按照浏览器的像素,eg:Edge1440宽来调整padding就可以调好。

方法2:

.el-input__wrapper {
  @media screen and (max-width: 1440px) {
    padding:***;
  }
}


http://www.kler.cn/a/376585.html

相关文章:

  • WPF+MVVM案例实战(十八)- 自定义字体图标按钮的封装与实现(ABD类)
  • Python-创建并调用自定义文件中的模块/函数
  • 【软服之家-注册安全分析报告-无验证方式导致安全隐患】
  • 文件管理软件根据多个关键字将不同目录下的文件夹批量复制或移动到新的指定文件夹,完成大量文件夹和文件管理任务
  • 英伟达 GPU 架构:演进与模型推理速度的深度关联
  • 2024年10月23日Github流行趋势
  • 【Java】方法的使用 —— 语法要求、方法的重载和签名、方法递归
  • 无源元器件-磁珠选型参数总结
  • 基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 复习回顾计划-vue篇
  • Word首行空格不显示空格符号问题
  • 2024 Rust现代实用教程Generic泛型
  • 解决pytorch问题:received an invalid combination of arguments - got
  • MFC图形函数学习03——画直线段函数
  • 【系统架构】如何演变系统架构:从单体到微服务
  • 前端好用的网站分享——CSS(持续更新中)
  • Three.js 开源项目及入门教程分享
  • 【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0
  • Python中os.mkdir() 和 os.makedirs()有什么不同
  • 3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建
  • WebSocket详解:从前端到后端的全栈理解
  • 【android12】【AHandler】【4.AHandler原理篇ALooper类方法全解】
  • 基于openEuler22.03的rpcapd抓包机安装
  • 如何为STM32的ADC外设编写中断服务程序
  • Linux权限管理和文件属性
  • Docker:技术架构的演进之路