半寸时光爱思考
如何在Ant Design的Table组件中让合并行背景色覆盖整个合并区域?
目前效果如图,想要的效果合并两行,背景也想覆盖两行,图中红框部分都会有背景。
求问这个如何实现
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20250121/52288dc666498d39e9caa1199a95b594.png
想过利用rwospan去把对应数量行都添加背景,但是如果鼠标从rowspan为0的行,也就是图中白色部分,移入是获取不到合并行的。
antd的版本是"4.16.13",链接中是antd的默认效果,
"https://codesandbox.io/p/sandbox/biao-ge-xing-lie-he-bing-ant..." (https://link.segmentfault.com/?enc=HggAR3f4Q7NgEPoQrL%2FEFw%3D%3D.pQz%2BphIfFGHSzIH6rr0HKCVxrhOiXRRFAiUpZ7qY6vNChWpOz3fzQUScz%2BYGtTQzKDzFRz3gMItZxQvbivFG2ppmlu3Kygji55ZrP%2FS2P%2BxDW94jsGtkwo%2FSvFkcPpeC)
半寸时光爱思考
sentinel做热点参数限流的源码是哪个类?
源码"Sentinel GitHub" (https://link.segmentfault.com/?enc=Zjk%2Fi4xpYRocZv2nRoYVZw%3D%3D.xhb5oblHElxfrfHhZPmeU3TQoa0aVhc7yNlxzaUVf3j9CQ2Y0aPr9SyAGaCiAX%2BO)
官方文档: "https://github.com/alibaba/Sentinel/wiki" (Wiki: Sentinel)
官方博客:"https://sentinelguard.io/zh-cn/blog/" (https://link.segmentfault.com/?enc=Bz6%2F8lKVxYAbyoiBZua9tg%3D%3D.%2FE9FUAKGIzurHuYKUsTr54neDfXSYaxsPG%2BYYlwckvwWIDp%2BUxC3r%2Bjfy6WhdiGk)
半寸时光爱思考
vue3 ts 提示模糊?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/26b9cd4a107439b43ac1ce42de31713b.png)
提示怎么给简化了?
可以在维持 "withDefaults(defineProps..." 这种写法的前提下,明确提示吗?
半寸时光爱思考
项目文件整个放到cdn上,里面有很多图片,是通过域名访问图片快,还是通过`../`这种形式快?
项目文件整个放到"cdn"上,里面有很多图片,是通过域名访问图片快,还是通过"../"这种形式快?文件里加载图片 是通过域名访问快 ,还是"../"
相对目录快?为什么?
半寸时光爱思考
echart中图列与圆环图重叠,怎么图列过多的情况下自适应?
echart中图列与圆环图重叠,怎么图列过多的情况下自适应https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/398536579d5698e1016dd1677680a73e.png
半寸时光爱思考
怎么给选中浏览器的滚动条的dom节点?
需求是:划过滚动条,增加滚动条的宽度,划出时,恢复css默认设置的宽。
问题是:我不知道怎么拿到浏览器的滚动条的dom,给他添加划入划出事件。目前是给页面加了划入划出,但那样的话在打开el-select的下拉框的时候,会出现屏幕抖动。
所以还是要给滚动条加,或者说,不用移入移出事件,还有什么办法能实现这个需求吗
半寸时光爱思考
谁有uni-simple-router vue3版本吗?
我有!
但是我的建议如下:
如果你是刚需,还是可以选择买一个的,性价比非常高 199 包括 技术支持+不限项目+永久使用,如果实在不行就选择开源版 同样支持vue2
半寸时光爱思考
React 组件 pros 传参为什么会丢失 value 属性?
问题解决了:我用的是 "antd-mobile" 的 "Form" 组件,表单控件的值必须通过 "Form.Item" 的 "initialValue"
来传递,否则想我传递过去也是 "undefined"
半寸时光爱思考
vue路由跳转问题?
试试这个demo,我从element-ui官网借鉴写的:
"https://element.eleme.cn/#/zh-CN/component/tabs" (https://link.segmentfault.com/?enc=FOMEdXRGd0wkGRuO1jhnYQ%3D%3D.9Xjb8NMVFO%2BItcdSxMGpsHmcq2SJcUVUWP1KTHXJ%2F6Y%2BIvFhaCdPWsSwyiGFFgJA)
export default {
data() {
return {
editableTabsValue: '2',
editableTabs: [{
title: 'Tab 1',
name: '1',
content: 'Tab 1 content'
}, {
title: 'Tab 2',
name: '2',
content: 'Tab 2 content'
}],
tabIndex: 2
}
},
methods: {
handleTabsEdit(targetName, action) {
if (action === 'add') {
let newTabName = ++this.tabIndex + '';
this.editableTabs.push({
title: 'New Tab',
name: newTabName,
content: 'New Tab content'
});
this.editableTabsValue = newTabName;
}
if (action === 'remove') {
let tabs = this.editableTabs;
let activeName = this.editableTabsValue;
if (activeName === targetName) {
tabs.forEach((tab, index) => {
if (tab.name === targetName) {
let nextTab = tabs[index + 1] || tabs[index - 1];
if (nextTab) {
activeName = nextTab.name;
}
}
});
}
this.editableTabsValue = activeName;
this.editableTabs = tabs.filter(tab => tab.name !== targetName);
}
},
goToNewRoute() {
let router = this.$router;
const newRoute = {
path: '/new-route',
component: () => import('@/views/index.vue'),
};
router.addRoute(newRoute);
let newTabName = ++this.tabIndex + '';
this.editableTabs.push({
title: '我是新增路由的标签标题',
name: newTabName,
});
this.editableTabsValue = newTabName;
router.push({ path: '/new-route', query: { item: "参数值" } });
}
}
}
{{ item.content }}
点我去新增路由
h1 {
font-weight: 500;
font-size: 2.6rem;
top: -10px;
}
h3 {
font-size: 1.2rem;
}
.greetings h1,
.greetings h3 {
text-align: center;
}
@media (min-width: 1024px) {
.greetings h1,
.greetings h3 {
text-align: left;
}
}
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241222/3837483e354550fd127847bb769c7814.png)
============我是分割线==================
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241222/da9be707bc798c49f59c7c47199bc358.png)
半寸时光爱思考
问一个typescript类型问题?
const api = [
{
name: 'pageList',
table: true,
},
{
name: 'pageAdd',
},
] as const;
type Ret = {
[K in T[number]['name']]: Extract extends {
table: boolean;
}
? boolean
: unknown;
};
type Api = Ret;
半寸时光爱思考
docker部署项目,nginx容器对后端api反向代理,nginx报错404?
因为某些需求,需要把前后端部署在同一个端口,配置nginx反向代理,如下"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/2b3cf332fd2130f36ffcc513c7b506a6.png)
在运行时已经将80端口映射到8848,并且能正确访问前端的页面。我预期是访问"http://localhost:8848/zssrapi/xxx" (https://link.segmentfault.com/?enc=uxpA6Hq88fV4QkkuHRCnHw%3D%3D.pN5IHAL02JwF6vVYaXCVLlurQKvYGHOihjJFNomyuLqU8bCbHuzz6O9WbfPAHnU7)时能转到后端实际端口"http://localhost:8123/zssrapi/xxx" (https://link.segmentfault.com/?enc=0krsSAuYup9uBy74sQ%2F4Og%3D%3D.CkGXd6aDmKv9kqErKinncnjdO3%2BzTyKgn%2FELaDxNoQzpJUMsPJqMsjjTKCddekd3)。但是尝试之后报错404,如图,"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/b046f9ee399f9b0bd2877ce5b4c5651d.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/c73313bb540b19b83d081f892a3dd13c.png)
求助解决办法qaq
半寸时光爱思考
走马灯,el-carousel,怎么做到垂直方向持续滚动?
可以使用滚动插件实现:vue-seamless-scroll
半寸时光爱思考
js事件冒泡是什么?
事件冒泡是由内到外(由子节点到根节点),还需要知道另一个事件捕获是由外到内(由根节点到子节点)。
至于"为什么要有事件冒泡的机制",下面是chatGPT的回答
事件冒泡机制是指当一个元素触发了某个事件时,该事件会从该元素开始向上层元素逐级传递,直到传递到最顶层的文档对象。事件冒泡机制的存在主要有以下几个原因:
1. 方便事件的处理:通过事件冒泡,可以将相同类型的事件统一处理,无需为每个元素都绑定事件监听器,减少了重复代码的编写。
2. 父元素对子元素事件的控制:通过事件冒泡,父元素可以监听到子元素触发的事件,从而对子元素事件进行控制或修改。这使得事件的处理更加灵活,可以在较高的层级上统一管理。
3. 事件委托:事件委托是事件冒泡的一种应用,通过将事件绑定到父元素上,可以监听到所有子元素触发的相同类型事件。这在动态添加、删除元素时非常有用,可以减少事件绑定和解绑的操作。
4. 提升性能:通过事件冒泡,可以减少事件监听器的数量,减轻浏览器的负担,提升性能。相比每个元素都绑定事件监听器,事件冒泡可以将事件的处理集中在一个元素上,减少了事件传递的开销。
总之,事件冒泡机制的存在使得事件处理更加方便、灵活,同时还可以提升性能,减少代码的冗余。
半寸时光爱思考
请教个django的orm问题?
from django.forms.models import model_to_dict
def book_to_dict(book):
authors_data = []
for author in book.authors.all():
author_data = model_to_dict(author)
author_data['au_detail'] = model_to_dict(author.au_detail)
gender_choices = {
0: '女',
1: '男',
2: '保密'
}
author_data['au_detail']['gender'] = gender_choices[author_data['au_detail']['gender']]
authors_data.append(author_data)
return {
'id': book.id,
'title': book.title,
'price': book.price,
'pub_date': book.pub_date,
'publish': model_to_dict(book.publish),
'authors': authors_data
}
def getList(request):
books = Book.objects.filter(title='西游记').select_related('publish').prefetch_related('authors', 'authors__au_detail')
books_data = [book_to_dict(book) for book in books]
return JsonResponse({
'data': books_data,
'length': len(books_data),
'success': True,
}, safe=False)
def findBy(request):
book_id = request.GET.get('id')
book = Book.objects.filter(id=book_id).select_related('publish').prefetch_related('authors', 'authors__au_detail').first()
if not book:
return JsonResponse({
'error': 'Book not found',
'success': False
}, status=404)
book_data = book_to_dict(book)
return JsonResponse({
'data': book_data,
'success': True,
}, safe=False)
半寸时光爱思考
网页打印预览的时候很正常,打印出来上边跟左边内容不全怎么办?
用的什么插件?换成"print.js" (https://link.segmentfault.com/?enc=G6%2BTv5IxE7fS6Ycl14TKcg%3D%3D.IgMBnqT373CUU9Vpj%2Bu7ulezGwe7Fmw5etjHUX7VNGk%3D)试试
半寸时光爱思考
svg显示问题?
A 能显示,B 不能,很明显是兼容性问题,不过具体是什么问题,就不太清楚。
如果是我的话,我会逐行删掉 SVG 里的内容,直到剩下的部分可以显示;然后再逐段删掉代码,直到剩下的代码可以正常显示。
这样就可以确定出问题的代码,然后去各种平台搜索,多半能找到结果。即使暂时解决不了,多数也有绕过的方案。
半寸时光爱思考
CSS中的font合成属性的应用问题?
这块内容直接看 "font" 属性的文档就可以知道了 👉 "https://developer.mozilla.org/zh-CN/docs/Web/CSS/font" (https://link.segmentfault.com/?enc=Oh1q7SFW36%2FDmO8oY7Jh3A%3D%3D.Zqv9xjs7i7kHzNWbg%2BOOWnKrsVmAJDQTZgXMXo64RYRGNjn7vrySJuG6jskENX37cVd4%2BPIeAw9VaPNsctsOOA%3D%3D)
«If "font" is specified as a shorthand for several font-related properties,
then:
如果 "font" 指定为多个字体相关属性的简写,则:it must include values for:
必须包含以下值:* ""
* ""»
***
如果单纯要求设置文字 "加粗" 和 "斜体",单独书写对应的CSS属性即可
p {
font-weight: bold;
font-style: italic;
}
半寸时光爱思考
小程序码如何解析出对应的路径以及参数?
背景:
我手中有一个分销的小程序码,我想在公众号文章里面实现点击文字就可以跳转到对应的小程序,但是别人通过这个小程序跳转的时候得要能看到是我推荐的,所以,我猜测这个小程序码里面一定是带着参数的。
问题:
公众号 自己推荐的添加小程序的两个方法:
1. 在小程序里面点击复制链接,结果我发现,无论是谁复制出来的都是一样的,所以,这方法肯定是不行了。
2. 通过开放十分钟的权限,可以获得小程序路径,这个我看了一下,上面带的参数都是页面以及菜单的信息,没有用户个人的信息,例如:openID id。
然后,在网上也使用了解码的工具,例如草料等,要么就是解析不了小程序码,要么就是解析出来的是base64,这个base64解码后乱七八糟的,根本就不是微信小程序的格式:"#小程序://"
这类的。
最后,也尝试了大家说的使用微信开发者工具
去进行二维码编译,结果好像只有自己开发的小程序才行,会报appid不对的错误。就算知道了这个小程序的appid,如果我不是其开发者,也不行。
"1698563722113(1).jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241201/17c4bc9826c723b7a2e11f2ce937561d.png)
目前能尝试的问题,基本上都试过了一遍,想问问大家还有什么别的方法去解析小程序码?非常感谢!!!
半寸时光爱思考
ruoyi guns pig 推荐哪个, 或者还有没有更好的?
如题, 求一个好用的脚手架
半寸时光爱思考
Base64 如何解码的?
str = "中!中" ;
对应的 byte[] = [-28, -72, -83, 33, -28, -72, -83]
"new String(..)"转字符串的时候是怎么知道 "-28, -72, -83" 为一组的呢?
是字符编码有什么规则吗?( "0x**----" ,"(byte) **" 是负数的就是3个字节一组这样?)
半寸时光爱思考
一个vue项目文件结构看不懂,也不知道怎么启动,是不是分模块打包啊,有大佬知道这么启动这个项目吗?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/132557443990e152cbe7779c45ddec9f.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/e9e992a60d47238fc2ec514bc2c2d77c.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/99d08c35f0f2caea72727588f0835512.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/1a71ae58a94846578354a326d1d1769b.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241129/95f0d973b377e05f40ccf486ddc98827.png)
半寸时光爱思考
有没有什么平台可以免费下载到字体包的?
需要找一些能下载到字体的平台,比如 Roboto, 思源黑体...或者其他一些免费(开源)字体,有没有什么网站能推荐的?
下载到的文件格式是 OTF
半寸时光爱思考
Harbor私服无法在外网访问?
我们在局域网内搭建了一个Harbor私服,局域网IP地址为: 192.168.3.9,这台机器本身具有公网IP,也有公网域名。
harbor.yml配置文件中,hostname配置为:
#hostname: xxxx(公网ip)
hostname: 192.168.3.9
现在发现一个问题,如果把hostname配置为内网地址,那么在局域网内可以访问。但在公网是无法访问的,即通过本机的外网ip无法访问。
如果将 Hostname改成 公网ip,那么存在另一个问题,就是在公网可以访问,但在局域网无法访问。
网上查了一些文章,有说要改
"external_url"的,好像又配置了一个nginx?(harbor已经自带了2个nginx了,还要再配置第3个nginx吗?)还有的好像要改 下面的
proxy段。
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
现在比较混乱了。 需要怎样改呢?谢谢!
补充说明一下, 目前使用http就可以了。 暂时不涉及证书问题。
两个参考网页:
"https://www.cnblogs.com/breeze-24/p/16250853.html" (https://link.segmentfault.com/?enc=8THJiv%2BZU3GcEXaBjDUSsg%3D%3D.kf99ZwfV%2BezswGaTJahTKKfMZE8COkaJokAQg9orixKEnIpX%2ByL2i8cDKpbx8rpKdu5h2Att3Ddf%2F2mZyAlpSA%3D%3D)
"https://www.cnblogs.com/zhangmingcheng/p/14167615.html" (https://link.segmentfault.com/?enc=VpcHHomInomMaFbI9Vyf%2Fw%3D%3D.2cU5N5V01RejA4syqby7F5XFUt62QU7VTp2pHOr6XMDd%2F%2Bkds60yUbWO1DKk5sUY369BkaTFFLbUFROgb5fy4w%3D%3D)
2023-12-06补充:
这个问题我重新做了下跟踪和总结,参考:"https://segmentfault.com/a/1190000044449171" (https://segmentfault.com/a/1190000044449171)
半寸时光爱思考
为什么在Idea的mybatis测试类里无法调用接口里的方法?
为什么我在测试类里调用UserMapper的list方法时会报错?
这个代码是我按着b站上黑马程序员2023新版JavaWeb开发教程写的。
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241122/f71fc6a30bdba06fea10ba7531b7cac7.png
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241122/ac31a63c7cada33c66fe7cc24e7053c3.png
***
我寻思我按照视频来的没有出现什么配置错误,代码也没写错,
然后我换了一个项目,在这个项目里没有引入mybatis的依赖,写了UserMapper接口,在测试类里调用UserMapper的list方法出现了一样的错误。Non-static method 'list()' cannot be referenced from a static context
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241122/dd32193e2aca2560e74b9632f7286533.png
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241122/b708400ba6567e0795da8c55ad561b83.png
这是什么原因,要怎么解决?
半寸时光爱思考
v-for=“item in 10“,如何倒序渲染?
{{ item }}
export default {
data() {
return {
items: Array.from({ length: 10 }, (_, index) => index + 1),
};
},
computed: {
reversedItems() {
return this.items.slice().reverse();
},
},
};
半寸时光爱思考
应用程序无法正常运行时需要先检查环境中的哪个环节出问题?
这问题未免也太宽泛了,简直像人类简史一样不知从何处开始回答。
只能说应该先检查错误信息,你的应用程序如果开发的比较规范,它不能运行或正常运行的时候应该都会有些日志或错误信息。应该先从日志和错误信息入手,然后再判断问题可能的范围。
半寸时光爱思考
jsPlumb连线后保存,数据还原连接点无法和原来保持一致,该如何设置?
使用"jsPlumb"组件做了一个拖拽连线的功能,分别链接左右两个div的右侧和左侧,然后保存连线,下次进入编辑是,还原当前连线状态,两个div连接点位置都不对,如下:
拖动连线的状态:
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241109/93de49fee511a7a5226a1ddbb8aa0352.png
数据库读取后还原的状态:
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241109/853c11186ed79e92bcbb1abe3aac86bb.png
如何还原到保存前的连线状态?
半寸时光爱思考
在Visual Studio中引用头文件报错?
在Visual studio中新建了两个c++源文件和一个头文件,分别是main.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include "Log.h"
int main()
{
InitLog();
Log("Hello World!");
std::cin.get();
}
Log.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include
void InitLog()
{
Log("Initializing Log");
}
void Log(const char* message)
{
std::cout << message << std::endl;
}
Log.h
#pragma once
void Log(const char* message);
void InitLog();
其中主函数一直显示错误信息
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241103/a123aa211fc0db7886753d0fc6d80628.png)
作为新手,我不是很清楚,我正常引用了头文件为什么会报错,求大佬解答一下
半寸时光爱思考
vue要怎么修改循环绑定的值呢?
推荐你在组件内部的data函数中创建个变量进行接收props传入的值,记得使用深拷贝,或者对props的数据进行双向绑定,在model函数中进行注册列如
model:{
props:"你得变量名",
event:"change"
}
还需要再methods中进行emit
changevalue(){
this.$emit('change',要更新的值)
}
请参考
半寸时光爱思考
CentOS 怎么导出如软件?
"CentOS" 怎么导出如软件?比如 "nginx" "git"
因为有的部署场景是内网的,所以我想先本地安装好然后导出来再拷贝到服务器上安装,并且如果可以的话这样的导出会把依赖一起导入进去么?
半寸时光爱思考
请问windows如何快速搜寻几千个PDF, Word里面的内容是否包含XXXX?
请问windows如何快速搜寻几千个PDF, Word里面的内容是否包含XXXX?
想要在几千个 PDF, Word, Excel 快速找出含有 XXXX 字
能批量显示位子跟标签,点两下能打开文件跳转该位子
我有找到fileseek,不过他需要很贵的费用,请问有开源或是免费版本吗?
半寸时光爱思考
关于React useCallback使用的问题?
React中的useCallback
下面的代码中"Com"是父组件,"Button"是子组件,子组件接收父组件的"count2"和"setCount2",子组件中使用了"memo(Button)"导出
function Com() {
const [count1, setCount1] = useState(0)
const [count2, setCount2] = useState(0)
const handleClick1 = () => {setCount1(i => i + 1)}
const handleClick2 = () => {setCount2(i => i + 1)}
// const callbackSetCount2 = useCallback(() => {
// setCount2(i => i + 1)
// }, [count2])
console.log("$$ ComA render")
return (
this is ComA
{count1}
setCount1(i => i + 1)}>count1 ++
count2
{count2}
)
}
子组件"Button"
function Button({ handleClick, children }) {
console.log(`$$ Rendering button` + children)
return (
this is Button.jsx
{children}
)
}
export default memo(Button)
在上面的代码中,如果点击"count1++"的按钮(不使用useCallback),父组件会重新渲染,但是子组件也会刷新,然而子组件中的"count2"依赖没有变化,所以只能是"handleClick2"函数变化了,这只能是因为父组件重新渲染导致了"const handleClick2 = () => {setCount2(i => i + 1)}"这一行重新运行。
所以我们需要使用"useCallback"来将"handleClick2"函数缓存,不会因为重新渲染而导致没有必要的刷新,这样做之后,点击"count1++"的按钮也不会导致子组件刷新了。
这是我对上面代码以及重新渲染机制以及"useCallback"的理解,这样理解对吗?
希望理解"useCallback"以及"setState"之后的更新机制,谢谢各位大佬了
半寸时光爱思考
小程序模板中怎么传递参数?
保存
saveInfo: function (e) {
let id = e.target.dataset.id
console.log("id:"+id);
},
半寸时光爱思考
请教一个微信网页授权跳转后前端用户掉线问题?
一个微信网页授权问题。
场景是这样的,本地有用户系统,想让本地用户可以绑定用户的微信。
架构是前后端分离,授权的业务基本都交给后端,就是点击授权会跳转后端的一个链接,然后处理授权的事务,处理完后再跳转回前端。
目前问题是,新用户第一次绑定跳转回前端的时候,本地用户登录状态会掉,看日志是跳转回前端后,前端检查本地用户登录状态时,传给接口的 token 变了。
但是绑定之类的逻辑是都正确执行完成的,就是本地用户要重新登录一下,之后解绑后再绑定,就不会丢失用户登录状态。
有考虑过缓存问题,跳转回前端时url加随机参数,但问题依旧。
半寸时光爱思考
js 匹配后台返回数据实现动态表头字段?
本质就是对列进行过滤,把有效的列选出来。如果每行数据都是规则的,包含所有列的,那只需要拿第一条数据出来作为条件过滤出列就好,如:
const columns = [
{ title: "海区", key: "area", },
{ title: "浪高(m)", key: "waveHeight", },
{ title: "水温(℃)", key: "waterTemperature", }
];
const data = [
{ area: "刁口", waterTemperature: "-0.4 " },
{ area: "黄河口", waterTemperature: "-0.1 " },
{ area: "广利港", waterTemperature: "-0.5 " },
{ area: "东营港", waterTemperature: "0.2 " },
{ area: "新户", waterTemperature: "-0.7 " },
{ area: "埕口", waterTemperature: "-0.4 " }
];
const columnSet = new Set(Object.keys(data[0]));
const validColumn = columns.filter(({ key }) => columnSet.has(key));
console.log(validColumn);
如果数据是不规则的,或者说,每行数据都只是把有效的属性列出来了,那要找所有列就需要遍历全部数据。
这种情况下就是在数据中每一行的 key 找出来,加到 columnSet 中去,可以用一个 flatMap 处理出来:
// const columnSet = new Set(Object.keys(data[0]));
const columnSet = new Set(data.flatMap(it => Object.keys(it)));
半寸时光爱思考
移动端 企微自建应用 把pdf文件放到前端项目的static下 然后用iframe访问地址static/pdf/web/viewer.html 本地可以 电脑和手机uat都不行 是为什么?
移动端 企微自建应用 把pdf文件放到前端项目的static下 然后用iframe访问地址static/pdf/web/viewer.html
本地(桌面云内部 )可以 电脑uat(桌面云外)和手机上访问uat都不行 是为什么?
报错
Failed to load module script: Expected a JavaScript module script but the
server responded with a MIME type of "text/html". Strict MIME type checking is
enforced for module scripts per HTML spec.
Failed to load module script: Expected a JavaScript module script but the
server responded with a MIME type of "application/octet-stream". Strict MIME
type checking is enforced for module scripts per HTML spec
搜了下是说网页中使用了模块脚本(module script),但服务器返回的 MIME 类型是 “text/html”,而不是 JavaScript
类型。根据 HTML 规范,严格的 MIME 类型检查会对模块脚本进行强制执行。
看了页面script应该是这两个地方
"企业微信截图_16998474767847.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/33e6aa5d196423437b5db748ec62bec4.png)
但是不知道该怎么改
半寸时光爱思考
前端项目部署,想要自动检测更新后通知用户刷新页面,但是发版后main.js入口文件不调用为什么?
想实现,"前端项目部署自动检测更新后通知用户刷新页面".但是发版后,main.js入口文件并不再次执行是为什么?
在main.js引入了version版本比较,但是发版之后,浏览器页面并不会自动再次执行main.js,导致用户如果之前一直在老页面,即便我发版,他也更新不到.
我是用oss发版的,文件名字hash我也做了处理,但是为什么引用文件名字都变了,浏览器还是老页面吗呢,不去读最新的资源文件"这是老页面
引用的js文件" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/0af29bb8c4b50a259ffdd37ef520c4fe.png)"这是新页面加了hash的文件名" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/377ac5c8fc571b8a6617ac2f9fc2ee41.png)
但是项目页面如果不刷新(下图是老页面读的),一直停留在老页面,他就一直访问老页面js,导致我的版本更新代码他读不到
"项目老页面引用的" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/ad5cb9e13525eebcf362d7e4c08b66fb.png)
这种我要怎么处理
半寸时光爱思考
axios设置超时时间不生效是什么原因?
设置超时时间是50毫秒,接口还能正常请求,超时时间不生效
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/4b46228739c50f79b3e64b11f774af8c.png)
axios({
method: 'get',
url: '',
params: {},
timeout: 50
}).then(res => {
console.log('res---', res)
}).catch(error => {
if (error.config.timeout == 50) {
Message.error('请求超时,请检查网络')
} else {
console.log(error)
}
})
全局设置axios.defaults.timeout = 50 也不生效
半寸时光爱思考
Vue3 defineModel 警告解决?
"vue 3.4" 版本发布日志里面有提到相关工具的版本要求,可以的话 "vite" 的版本也可以升下级了
"https://blog.vuejs.org/posts/vue-3-4#potential-actions-needed" (https://link.segmentfault.com/?enc=x1xFZkxsPrDLE4H0rSsdRw%3D%3D.a0yWa6zYO91ps8gSkYuij7VjVfsEOvG9DMqaPCZ7LwvVdDVV%2BoFY5SFljfOBhNcWTmen6rSqbeKvIM1jbBarcQ%3D%3D)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241013/17eed2d23f2d93a6b74b2d0da35ae7df.png)
半寸时光爱思考
main.go里 为什么不能访问其他文件里的变量?
file1.go里
package main
import (
"container/list"
)
var GlobalVariable = "Hello" // 定义全局变量
var l = list.New()
room.go里
import (
"./file1"
)
func test() {
file1.GlobalVariable
}
是可以的
但是main.go里
import (
"./file1"
)
就保存后直接给我删除了 "./file1"
在vscode里
就保存后直接给我删除了 "./file1"
在vscode里
我想在main.go里可以访问 file1.go的全局变量
半寸时光爱思考
请问在 react 中如何实时更新状态?
请教下 useState 更新的问题,有一个页面,当数据库中没有数据的时候,显示 No user,当数据库中有数据的时候,显示出真实的数据,代码如下
const [users, setUsers] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch(`${apiUrl}/users`, {
method: 'GET',
headers: {
Authorization: `Bearer ${token}`,
}
});
if (response.ok) {
const data = await response.json();
if (data.success) {
setUsers(data.users);
}
} else {
console.log('Other HTTP Error:', response.status);
}
} catch (error) {
console.error('Error fetching users:', error);
}
};
fetchData();
}, [token]);
const userList = () => {
const activedUsers = users
.filter((user) => user.status === 1);
if (activedUsers.length === 0) {
return(
{activedUsers.length === 0 &&
No user
}
)
}
return (
{activedUsers.map((user) => (
{user.Name}
))}
)
}
现在我遇到的问题是
1. 每次访问这个页面 /users,都会显示 No user,然后过一会数据完全载入了才会显示正确的数据。查看了下,这里会渲染两次,第一次渲染 activedUsers.length 是 0,第二次渲染才会正确的载入数据。
2. 点击任意一个用户名字后,会跳到用户的详情页面,再次访问 /users,会显示刚刚访问的这个用户的用户名,然后过一会才会自动刷新出正确的数据。
请问这个问题怎么解决,希望每次进入都是显示正确的数据。
半寸时光爱思考
ts 类型推断疑惑?
function setDictionary(
data: T,
label: keyof T,
dictionaryOptions: { [key in keyof T]: { [key: string | number]: any }[] }
) {
const options = dictionaryOptions[label];
}
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/e720227068a227793856ab57bf57e44f.png)
"options" 怎么会是这个类型?应当是"{ [key: string | number]: any }[]" 才对啊。
是哪里出了问题?如何解决呢?
" "vue-tsc": "^1.8.27""
半寸时光爱思考
vue项目怎样实现:新消息推送、实时更新、推送通知功能,有哪些实现方法?
如题:
我用的是定时请求接口数据。
请问还有哪些常用方法吗?
谢谢
半寸时光爱思考
为什么script标签可以支持跨域?
草案中给出了一点点说明,试想在"web"早期,如果"script"不能跨域,那这样对构建"web"来说就太困难了,要知道那时候依赖很多第三方"js"库是家常便饭。
简单来说,算是一种妥协,
"why-is-the-html-script-tag-not-subject-to-the-same-origin-policy" (https://link.segmentfault.com/?enc=xsKdQ8zPTx7hnmwtkKCvZg%3D%3D.ABOKGPjFMOyqzMpTBOvXWgV9GXXYHyLsOvrW8WgHaKECSWeLpZnO64TL7hDg%2Bf7VfnzsQLHp2NLF9%2B2wT6koznW3%2BVjijf0WbevqForaW7pgCKa2yZmijalTAldn4cCIw5aoJUyXTAJ0RajAkqyZOg%3D%3D)
半寸时光爱思考
el-image的src赋值了一个接口中返回的图片地址,为什么接口请求了两次呢?
el-image的src赋值了一个接口中返回的图片地址,为什么接口请求了两次呢?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/29f16b012b9ec31bc13649c6b371713e.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/ab3f785846c82c3d41efd23d1a3f52a9.png)
给el-iamge设置key和更改lazy的状态都没有区别,还是加载了两次
currentPicture初始是null,是通过接口拿到图片完整地址进行赋值的
半寸时光爱思考
vue项目打包,怎么实现不同环境配置不同的配置呢?
vue项目打包,怎么实现不同环境配置不同的配置呢?
例如:
// 在vue.config.js中设置了
module.exports = {
……
configureWebpack: config => {
if(process.env.NODE_ENV === 'production'){
……
}else if(process.env.NODE_ENV === 'xxxx'){ // 自定义环境
}
}
}
打包命令 npm run xxxx
可以进入‘xxx’处配置,执行自定义配置
半寸时光爱思考
get请求参数放body里,post请求参数放url上这种是否合理?
技术上讲是可以的,但是不建议: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET" (https://link.segmentfault.com/?enc=G2WAxD9oHVpju0wErA%2Fmzg%3D%3D.9Qszp7rOMYUP9K0Eh1iwMKWk9Fio3c3t4Jfrnlkhuj1QW0gP49aL5syuYpushpu6zB8VkYgDkQOHwXnvhL7nQQ%3D%3D)
虽然HTTP规范(RFC 7231)并未规定GET请求不可以携带Body,但是后续的规范逐步建议应该明确这种行为,给予警告甚至拒绝。
曾经ElasticSearch的RESTAPI采用GET请求携带Body请求的接口格式和规范,但在目前版本中已经彻底废弃
一篇不错的介绍文章可以参见: "https://www.baeldung.com/cs/http-get-with-body" (https://link.segmentfault.com/?enc=3mVjfyLQfmrRUT5fyvTtRg%3D%3D.B5H64PhAamIx%2BO%2Bvq%2BPkDp7OXvuB4TIWJwqAPreDTNEEIGOudes81YlaH0j6PLCM)
如果你用第三方类库,可能已经开始拒绝GET请求携带Body了,所以更不建议你这么去做
半寸时光爱思考
MongoDB中对JSON数组内date字段创建唯一索引的方法?
mongodb 文档的某键的值是json数组 如何给该json的date字段创建唯一索引
半寸时光爱思考
Vue Router路由守卫beforeEach的next方法使用?
Vue Router路由守卫函数beforeEach(to,from,next)里的next方法能否写在Promisse的回调函数than里面?
半寸时光爱思考
价格验证,我这个是不是已经最严谨了,高手帮忙看看是不是可以一个正则搞定?
我一般会在 "any-rule" (https://link.segmentfault.com/?enc=5VcysLmiXhGkf%2B176dEPzw%3D%3D.cxW4rR8DUd%2FRYjIcI88%2Fe1oqNVrQ3yqlNyAsvZcrLTcCeaRmHfOXNoPqO1j6mpf5)
或者 "i-hate-regex" (https://link.segmentfault.com/?enc=Hbj7Ujn8akICFPKdKP6IvQ%3D%3D.3lQUvwuoJJL7xqjUDIgiFblBWaWDsXvcnl3bnORcZOBdDmvVgRZcjJnxy3EpfjvB)
里面找,找到了一个类似的稍微改了一下。
"/^([1-9]\d{0,}|0)(\.\d{1,2})?$/"
const reg = /^([1-9]\d{0,}|0)(\.\d{1,2})?$/
const testCases1 = [0.1, 1, 1.0, 123, 1234, 12345.67, '123', '123.45']
console.log('正确用例', testCases1.map(v => reg.test(v)))
// 正确用例 Array(8) [ true, true, true, true, true, true, true, true ]
const testCases2 = [-0.99, -1, 0.123, '0123', '00.00', '123.45.67', '123,123', '123,123.45', {}, [], '', null]
console.log('错误用例', testCases2.map(v => reg.test(v)))
// 错误用例 Array(12) [ false, false, false, false, false, false, false, false, false, false, … ]