react在ts中提示ref问题
不要太在乎一些人,越在乎,越卑微。——周国平 首先按照官方文档的demo写好代码,却报错如下: 安装插件Error Lens后: 如何解决? 前往Text的ref源码,可以看到是需要一个叫LegacyRef的类型 我们进LegacyRef,看到其就是Ref或string的类型 因此这里我们定义为Ref类型即可 这里出现了新的问题,不能将MutableRefObject<Text | null |undefined>分配给Ref<Text> 我们进入useRef源码,看到其包含几个重载 分别查看MuteableRefObject和RefObject 可以看到RefObject是Ref中容许的其中一种类型 所以应该使用上面一种重载 在原有代码React.useRef()中传入null 报错解决 同理,trRef一样 注意此处Ref<TextRef>内的泛型使用的是konva/lib/shapes/Text包下的Text,改名为TextRef 除了在定义变量左侧申明类型,在方法右侧也可以申明泛型,让编辑器自动推测
konva-react
“善良一点,因为大家的一生都不容易。”——《奇迹男孩》。 官方文档:https://konvajs.org/docs/react/ 中文文档:http://konvajs-doc.bluehymn.com/docs/react/ 安装: 1pnpm install react-konva konva --save 在konva中能做到的,在konva-react也一样能做到,只不过是换了一种写法罢了 这里有个使用konva-react的在线编辑器Demo https://konvajs.org/docs/sandbox/Canvas_Editor.html 是基于一个叫Polotno的框架,它提供了多种react对konva的封装,能开箱即用 https://polotno.dev/ 但其不可以免费用于商业用途 https://codesandbox.io/embed/github/polotno-project/polotno-site/tree/source/examples/polotno-demo?fontsize=11&hidenavigation=1&a...
在线idea
远方除了遥远一无所有。——海子《远方》 分享一个在线idea地址: https://ide.aliyun.com/ 界面是这样的: 甚至能debug 能装插件 非常方便
项目部署到6666端口访问不了
通向面包的小路蜿蜒于劳动的沼泽之中,通向衣裳的小路从一块无花的土地中穿过,无论是通向面包的路还是通向衣裳的路,都是一段艰辛的历程。——福斯 这个问题是由于chrome禁用了部分端口: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc 这里的: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586// The general list of blocked ports. Will be blocked unless a specific// protocol overrides it. (Ex: ftp can use port 21)// When adding a por...
bean-searcher整合mybatis-plus逻辑删除
人死像熟透的梨,离树而落,梨者,离也。——《活着》 需要用到参数过滤器: https://bs.zhxu.cn/guide/latest/advance.html#%E5%8F%82%E6%95%B0%E8%BF%87%E6%BB%A4%E5%99%A8 123456789101112131415161718192021@Beanpublic ParamFilter logicDeleteFilter() { return new ParamFilter() { @Override public <T> Map<String, Object> doFilter(BeanMeta<T> beanMeta, Map<String, Object> paraMap) { // beanMeta 是正在检索的实体类的元信息, paraMap 是当前的检索参数 // 返回过滤后的检索参数 TableInfo t...
部署boot项目sh脚本
只有流过血的手指,才能弹出世间的绝唱。——泰戈尔 分享一个部署boot项目的sh脚本 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#环境变量source /etc/profile#!/bin/sh#jdkJAVA_HOME=/此处换成真实jdk路径export PATH=$PATH:$JAVA_HOME/binexport BUILD_ID=dontkillme#定义程序名 及jar包的名PROJECT_NAME=此处换成真实jar名称.jarLOG_NAME=日志名.log## 编写判断程序是否正在运行的方法isExist() { ## 首先查找进程号 pid=$(ps -ef | grep ${PROJECT_NAME} | grep -v "grep" | awk '{p...
browserify
很奇怪,我们不屑与他人为伍,却害怕自己与众不同。——保罗·科埃略的《韦罗妮卡决定去死》 今天又来分享个好东西:https://browserify.org/ 这个玩意儿可以帮我们把npm下载的依赖,使用script标签引入: 先安装: 1pnpm install -g browserify 比如我们引入一个outils 1pnpm i outils 然后编写一个main.js 12345const outils = require('模块名')window.模块名 = 模块名// 例如const outils = require('outils')window.outils = outils 生成 123browserify main.js -o [文件名]# 例如browserify main.js -o bundle.js 然后我们引入这个js试试 1<script src="bundle.js"></script> 运行一下,可以看到我们能在控制台拿到,说明引入成功 有朋...
exists
发上开出了蔷薇,袖底是风,足下是莲。——顾城 我们可以使用exists代替in查询: 阿里编码规约第五条第(三)条第9条: 【推荐】in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在1000个之内。 我们可以在子元素多的情况下,使用exists查询 比如下面这个in查询 123456789101112SELECT * FROM sys_user AS a WHERE id in ( SELECT user_id FROM sys_user_role AS b WHERE b.role_id IN ( SELECT id FROM sys_role AS c WHERE b.role_id = c.id AND c.role_code LIKE '%o%' )); 可以改为: 12345678910111213SELECT * FROM sys_user AS a WHERE EXISTS ( SELECT user_id FROM sys_user_role AS b WHERE a.id = b.us...
mysql修改字符集
我需要,最狂的风,和最静的海。——顾城《世界和我·第八个早晨》 首先是查看字符集格式 1show variables where variable_name like '%character%' 然后是存储过程,用于修改表内所有字段的字符集 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950DROP PROCEDUREIF EXISTS addColumn;DELIMITER $$CREATE PROCEDURE addColumn () BEGIN-- 定义表名变量 DECLARE s_tablename VARCHAR ( 100 );/*显示表的数据库中的所有表SELECT table_name FROM information_schema.tables WHERE table_schema='databasename' Order by table_name ;*/#显示所有 DECLARE ...
类型描述符
我知道你愚蠢轻佻、头脑空虚,然而我爱你;我知道你的企图你的理想,你的势力,你的庸俗,然而我爱你;我知道你是个二流货色,然而我爱你。——毛姆 见: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.2.1 在java中,由于历史原因,出现在类文件结构中的二进制名称语法与我们常用的类名不同,通常使用(正斜杠)/替换了原本的包名间隔(句号). 例如Thread的类名叫java.lang.Thread,但是在class文件格式的描述符中使用的内部格式,对Thread类名称utf8的引用却是:java/lang/Thread 不信我们随便打开一个class文件 可以看到类似的描述符 那如何获取类的描述符呢?它的规则又是如何呢? 首先,基本类型描述符,都是以ASCII字符表示,例如L 正斜杠类名;表示对象类型,[表示数组类型 我们可以在sun.invoke.util.Wra...
