# mini-React
1
react的diff算法优化方式 怎么从o(n)3 优化到o(n) 怎么优化的element diff
react的fiber为什么要用链表
# Render
# 其他API
# 实现memo()
/**
* @param {Function} func
* @param {(args:[]) => string } [resolver] - cache key generator
*/
function memo(func, resolver) {
const map = new Map();
return function (...params) {
let key
if (typeof resolver === 'function') {
key = resolver(...params)
} else {
key = [...params].join('-')
}
if (map.has(key)) {
return map.get(key)
} else {
const val = func.apply(this, [...params])
map.set(key, val)
return val
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 其他
# 如何使用React.createElement?
const element = (
<h1 className="greeting">
Hello, world!
</h1>
)
1
2
3
4
5
2
3
4
5
- 实现
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
1
2
3
4
5
6
2
3
4
5
6
# 参考
← React之Hooks React之生态 →