This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 简单的顺序队列,只能添加和迭代,并且只能支持五位数以内,数组的长度最好不要超过四位数 | |
// 利用的是js的对象,如果key是正整数,那么在添加时可以保持大小顺序 | |
class SimpleJSPriorityArray { | |
constructor() { | |
this.valcountmap = {} | |
this.posmap = {} | |
this.negmap = {} | |
this.size = 0 | |
} | |
get length() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 让广告隐藏 | |
const style = document.createElement('style') | |
style.textContent = ` | |
div[data-testid="cellInnerDiv"]:has(path[d="M19.498 3h-15c-1.381 0-2.5 1.12-2.5 2.5v13c0 1.38 1.119 2.5 2.5 2.5h15c1.381 0 2.5-1.12 2.5-2.5v-13c0-1.38-1.119-2.5-2.5-2.5zm-3.502 12h-2v-3.59l-5.293 5.3-1.414-1.42L12.581 10H8.996V8h7v7z"]) { | |
display: none!important; | |
} | |
` | |
document.head.appendChild(style) | |
// 支持视频直接跳转 | |
document.addEventListener('click', (event) => { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 当你在react hook中想读取或者设置某个值但是并不关心它们的变化时,可以使用下面的hook | |
export function useGetState(data) { | |
const [val, setVal] = React.useState(data); | |
const currentValRef = React.useRef(val); | |
currentValRef.current = val; | |
return React.useCallback((...args) => { | |
if (args.length) { | |
setVal(args[0]); | |
} else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 优化过的context,可以单独读写每个属性而不会引起全量的重渲染 | |
* (没有适配devtool,会报错) | |
*/ | |
import React from 'react'; | |
export function useMyContext< | |
T extends { | |
contexts: { | |
[k: string]: React.Context<{ atom: StateFunc<any> }>; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React from 'react' | |
interface ContainerProviderProps<State = void> { | |
initialState?: State | |
children: React.ReactNode | |
} | |
const usecontext = React.useContext | |
export default function createContainer<Value, State = void>( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const jsdom = require("jsdom"); | |
const { JSDOM } = jsdom; | |
const path = require('path') | |
const fetch = require('node-fetch') | |
const finalhandler = require('finalhandler') | |
const http = require('http') | |
const serveStatic = require('serve-static') | |
function createServer (port, root = path.join(__dirname, 'dist')) { | |
const serve = serveStatic(root) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { createStore, combineReducers, compose, applyMiddleware } from 'redux' | |
import produce from 'immer' | |
function init (model, middleware) { | |
const reducers = {} | |
const root = Object.create({ | |
get store () { return store }, | |
get state () { return store.getState() } | |
}) | |
Object.entries(model).forEach(([name, option]) => { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function resolveValue (promise, value, resolve, reject) { | |
if (promise === value) { // 不能resolve自身 | |
return reject(new TypeError('Can not resolve or return the current promise.')) | |
} | |
if (value === null || (typeof value !== 'object' && typeof value !== 'function')) { | |
return resolve(value) | |
} | |
let then // thenable可能是对象或者函数,它的then只能读取一次并且需要捕获可能的错误 | |
try { | |
then = value.then |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function Parent (name) { | |
this.name = name | |
} | |
Parent.prototype.getName = function getName () { return this.name } | |
function Child (name, age) { | |
Parent.call(this, name) | |
this.age = age | |
} | |
Child.prototype = Object.create(Parent.prototype, { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const context = { | |
title: 'hello', | |
list: [1, 2, 3] | |
} | |
const template = ' \ | |
<header>${title}</header> \ | |
<ul>${list.map(i => `<li>${i}</li>`).join("")}</ul> \ | |
' |
NewerOlder