react hooks中的useState如何实现的 react useState如何实现的import { useState } from 'react';export function User() { const [name, setName] = useState(''); const [age, setAge] = useState(18); const onChangeName = (e) => { setName(e.target.value); } const onChangeAge = (e) => { se
webpack编写Plugin webpack编写pluginclass MyPlugin{ constructor(options){ } // Webpack 会调用 BasicPlugin 实例的 apply 方法给插件实例传入 compiler 对象 apply(compiler){ compiler.plugin('compilation',function(compilation) { }) }}module.exports = MyPlugin;Compiler 和 Compil
webpack自定义loader webpack loader开发同步loaderconst loaderUtils = require('loader-utils');/** * * @param {*} content 文件信息 * @param {*} map 文件映射信息 * @param {*} meta * source是输入的内容 * sourceMap是可选的 * meta是模块的元数据,也是可选的 */module.exports = function(content, map, meta) {
webpack基础使用 # webpack基本使用## 样式资源引入import"index.css"{ test: /\.css$/, use: [ // 创建style标签,将js中的样式资源添加到header中生效,且不是直接写入到html中,是通过js执行时写入 'style-loader', // // 将css变成commonjs模块加载到js中,里面的内容是样式字符串 'css-loader' ]}处理css和js中的图片用到file-loader、url-load{
Tapable的使用 Tapable的使用Tapable是webpack核心同步钩子注册在该钩子下面的插件的执行顺序是顺序执行只能使用tap注册,不能使用toPromise和tapAsyncSyncHookconst { SyncHook } = require('tapable');const hook = new SyncHook(['name']);hook.tap('hello', (name) => { console.log(`hello ${name}`);});hook
SCSS学习 SCSS学习父选择器 &.container { color: red; &:hover { color: #ffffff; } body .other & { color: #000000 }}编译结果.container {color: red;}.container:hover { color: #ffffff;}body .other .container { color: #000000
SHELL 入门 SHELL 入门##常用环境变量echo $PATH #环境变量echo $HOME #当前用户目录echo $SHELL #所用的bash shell的路径echo $PWD #当前脚本路径echo $USER #当前用户名echo $$ # 当前进程号Shell脚本的执行1.输入脚本的绝对路径或相对路径2.bash或sh +脚本3.在脚本的路径前再加". " 或source区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享。但是使用. ./脚本.sh 这种方
linux 各种信息查看 zengwe:ssh$ lsb_release -cCodename: bioniczengwe:ssh$ cat /proc/versionLinux version 4.4.0-19041-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #488-Microsoft Mon Sep 01 13:43:00 PST 2020zengwe:ssh$ uname -aLinux DESKTOP-DHK0I3K
win10下ubuntu自动开启ssh 远程连接 1.建txt文件写入set ws=wscript.createobject("wscript.shell")ws.run "wsl -d ubuntu -u root /etc/init.d/ssh start",vbhide2.更改文件后缀sshd.vbs放入windows的开机自启动中C:\Users\USER_NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartupUSER_NAME为windows主机用户
JavaScript Symbol.iterator 粗略的实现Array的功能interface MyArray<T> { [key: number]: T}class MyArray<T> { constructor() { // Object.defineProperties(this, { // length: { // enumerable: false // } // });
react hooks之useRef 在函数组件中的一个全局变量,不会因为重复 render 重复申明const SaveVal = () => { let timer = setTimeout(() => {}); let ref = useRef(timer); let [count, setCount] = useState(0) return ( <div> {timer}~{ref.current}~{count}<br />
typescript Object is possibly ‘null‘. 明知道这个值不可能为null, 但是类型系统判断可能为null解决这个问题只需要加’!’const SaveEle = () => { let ref = useRef<HTMLInputElement>(null); let [val, setVal] = useState(0); return ( <div> <div>{val}</div> <inpu
react hooks之useEffect 相对于class component来说,所有的生命周期都在effect中effect定义官方的index.d.tstype EffectCallback = () => (void | (() => void | undefined));type DependencyList = ReadonlyArray<any>;function useEffect(effect: EffectCallback, deps?: DependencyList): void;接受的第一
react hooks之useState import React , { useState } from 'react';export const Demo11 = () => { let [count, setCount] = useState(() => { return new Date().getTime(); }); return ( <div> <div>{count}</div>