copilot
为了使灵魂宁静,一个人每天要做两件他不喜欢的事。——《月亮与六便士》 分享这个插件 在idea和vscode都能用 能够根据注释、上下文提示代码,例如此处白色就是我们提示的内容 有时候能遇到一些有趣的 一些实用的css动画 html标签 甚至是java代码、maven依赖库等等都可以补全
对接飞书机器人
你真正的凯旋,在于你不断地毁坏你的凯旋门。——阿多尼斯《我的孤独是一座花园》 按照文档申请webhook https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN 然后编写代码: 引入的hutool 代码: 1234567891011121314151617181920212223242526272829303132import cn.hutool.core.map.MapBuilder;import cn.hutool.core.map.MapUtil;import cn.hutool.http.HttpResponse;import cn.hutool.http.HttpUtil;import cn.hutool.json.JSONUtil;import cn.hutool.log.Log;import cn.hutool.log.LogFactory;/** * 机器人工具类 * * @author <achao1441470436@gmail.com> * @since 2022/4...
setState异步问题
若人间有情,那是开始,也是尽头。——北岛怀念顾城 今天使用react中setState后立马从state中获取,然后使用,发现时灵时不灵的,我立马意识到setState可能是异步的,翻看官方文档,果然: 调用 setState 其实是异步的 —— 不要指望在调用 setState 之后,this.state 会立即映射为新的值。如果你需要基于当前的 state 来计算出新的值,那你应该传递一个函数,而不是一个对象(详情见下文)。 代码不会像预期那样运行的示例: 123456789101112131415161718incrementCount() { // 注意:这样 *不会* 像预期的那样工作。 this.setState({count: this.state.count + 1});}handleSomething() { // 假设 `this.state.count` 从 0 开始。 this.incrementCount(); this.incrementCount(); this.incrementC...
react hook 生命周期
诚实的生活方式其实是按照自己身体的意愿行事,饿的时候才吃饭,爱的时候不必撒谎。——马尔克斯《霍乱时期的爱情》 官方文档:https://zh-hans.reactjs.org/docs/hooks-reference.html#conditionally-firing-an-effect 直接上代码: 123456789101112131415161718192021222324252627282930313233343536373839404142'use strict';function LikeButton() { const [liked, setLiked] = React.useState(false) const [count, setCount] = React.useState(0) React.useEffect(() => { // 只执行一次 setInterval(() => setCount(state => ++state), 1000) ...
使用BiFunction更改map的value
伟大变为可笑只有一步,但再走一步,可笑又会变为伟大。——佩思 这个PR是这样的: map 通过传入的BiFunction实现来返回值为新的map,支持返回别的类型 123456789101112131415161718/** * 通过biFunction自定义一个规则,此规则将原Map中的元素转换成新的元素,生成新的Map返回<br> * 变更过程通过传入的 {@link BiFunction} 实现来返回一个值可以为不同类型的 {@link Map} * * @param map 原有的map * @param biFunction {@code lambda},参数包含{@code key},{@code value},返回值会作为新的{@code value} * @param <K> {@code key}的类型 * @param <V> {@...
vercel
请给我勇气和欢愉,我要攀登这一天的顶峰。——博尔赫斯 vercel可以快速开发前端网站然后一键部署 网址:https://vercel.com/ 进来后我们登陆了可以看到控制台,创建一个应用 我这里选择一个nuxt.js的模板,点击create 我们的代码就已经自动clone到我们的github仓库中了 此时开始了自动部署 在一阵烟花特效后,点击Go to Dashboard可以回到控制台 进入我们的应用 点击visit即可访问 完成
vue中特殊的prop和事件
懒惰等于将一个人活埋。——泰勒 我们知道v-model可以用于input等标签,当做语法糖进行绑值 对于我们自定义的组件,其实也可以使用 官方文档 例如此处我们可以让input改变值时,父组件绑定的值一并改变 1234567891011121314151617<template> <input type="checkbox" :checked="value" @change="$emit('input', $event.target.checked)" /></template><script> export default{ props:{ value:{ type:Boolean, default:()=>false } ...
Object.fromEntries
微微怪时间不能保存情绪,保存那一切情绪所曾流连的境界。——《你是人间的四月天》 文档 我们可以用其将Iterator转换为对象,例如Map、Array或者实现@@iterator方法的的对象 1Object.fromEntries(new URLSearchParams("q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4")) 1Object.fromEntries(new Map(new URLSearchParams("q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4"))) 例如我这里写一个class,实现迭代协议 1234567891011121314...
antdv动态表单组件
你已春色摇曳,我仍一身旧雪。——送花的人走了 分享一个自己写的antdv动态表单组件 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618...
vue项目配置可选调用链
生活是苦难的,我又划着我的断桨出发了。——博尔赫斯 可选调用链就是?.写法 有些vue项目没有默认配置,因此只能手动配置 介绍:https://babeljs.io/docs/en/babel-plugin-proposal-optional-chaining 安装: 1cnpm i --save-dev @babel/plugin-proposal-optional-chaining 然后配置在根目录下的babel.config.js 新增: 123{ "plugins": ["@babel/plugin-proposal-optional-chaining"]} 完整: 12345678module.exports = { presets: [ "@babel/preset-env", ['@vue/app', { useBuiltIns: 'entry' }] ], "plugi...
