Actrually they are some snippets in case of forgetting.
- 组件声明
1 | //纯组件 |
- 函数组件的默认属性
1 | type Props = { age: number } & typeof defaultProps; |
- class 组件
1 | type State = typeof initialState; |
- ref 的 typescript 写法
1 | class CssThemeProvider extends React.PureComponent<Props> { |
create-react-app my-project --use-npm
选定使用 npm.- 联合类型声明,对于原始类型,ts 可以自动识别
1 | interface Bird { |
- 使用
tabIndex
可以控制 TAB 光标选中 - 默认设置组件不加载
1 | const MessageBox = ({ open, text, buttons }) => |
- 高阶组件的 ts 写法:
1 | import React from "react"; |
- 对于有底部 border 的 input 在 hover 时 border 的 width 变化,行高可能会出现变化,解决: _ 在其父级加入 after 伪类做 border-bottom,不要用 input 的 border,另外 input 加伪类不生效. _
- less 有关
1 | width: ~calc(100px - 20px) // ~意思是避免编译 |
- 窗口的滚动
1 | 滚动的高度 = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop |
- 防抖
1 | function Throttle(fn, delay) { |
- 直接获取表单 dom:
document.forms['loginForm']
- 获取类似 get 的格式化语句
1 | Object.entries(object1) |
- React-transition-group 使用方法,css-transition 第一次调用,使用的类是 appear,后面几次才会使用 enter
1 | //首先,transition是基础,他可以吐出四个不同的状态'entering'|entered|exiting|exited |
- 命名方式:
camelCase, PascalCase, kebab-case
- 深层过滤器
1 | var res = input.filter(function f(o) { |
几种类型的操作:
Exclude 排除
Exclude<keyof Props, keyof ExtractName>
extractName 为想要排除掉的 propsPick为只选用其中的一些属性
Pick<User,"name"|"age">
只选用 name 和 age 这两个属性复制文本并选中
textarea$.select(); document.execCommand('copy');
bind,call,apply
1 | var car = { |
- 一些 ts 的片段
1 | // variables |
- 函数的安全调用
1 | export function safeInvoke(func: Function | undefined, ...args: any[]) { |
- export 的一些用法
1 | // some var |
一款工具可以监听文件变化,并重启服务器:
nodemon
对象转化为字面量类型:
keyof typeof Type
webpack 使用小结
配置 config
tsconfig. 这里遇到 moment 无法识别: 添加配置:
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
如果要导出声明文件需配置
//tsconfig "declaration": true
//package.json tsc --emitDeclarationOnly
对于打包的声明文件有两种形式,一个是单独发一个包名
@types/package_name
,里面只有声明文件.另一种形式就是与包一起发,index.js 并列一个 index.d.ts.key 在渲染时如果每次都跟着变,就会重复渲染,会有性能问题,注意既要保持 key 唯一,也要保证其不会一直刷新
ts 当中 key in 和 key of
1 | type key = "vue" | "react"; |
- 如何使用 git reset:
https://www.codenong.com/cs105557977/
- get all export var from current folder,
import * as _adapter from "./data"
; - process.argv 返回一个数组,这个数组包含了启动 Node.js 进程时的命令行参数。
Array.from({ length: 2 }, () => 'jack')
生成数组 或者new Array(9).fill('item')
.show-grid [class*="span"]
类似于正则匹配- 只要一个匹配成功,后面就不管了,可以这样用:
1 | let diffed = false; |
- 导入后紧接着又导出去
1 | import App from "./App"; |