Skip to content

Commit cd56277

Browse files
committed
2020.11.12
1 parent 6af42f1 commit cd56277

2 files changed

Lines changed: 79 additions & 0 deletions

File tree

Cute-Gist/React/BFT.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// 广度优先遍历(breadth-first traversal,BFT)
2+
// https://github.com/pfan123/Articles/issues/62
3+
4+
const createElement = (tagName, props, ...children) => {
5+
return {
6+
tagName, props, children
7+
}
8+
}
9+
10+
const vnode = createElement(
11+
'div',
12+
{className: 'leoBox'},
13+
createElement(
14+
'span',
15+
{className: 'leoItem'},
16+
createElement(
17+
'span',
18+
{className: 'leoIcon'},
19+
'这是 leoIcon'
20+
)
21+
),
22+
createElement(
23+
'span',
24+
{className: 'leoItem'},
25+
'这是 leoItem'
26+
)
27+
);
28+
29+
console.log(vnode)
30+
31+
const wideTraversal = vnode => {
32+
if(!vnode) {
33+
throw new Error("Empty Tree!")
34+
}
35+
const nodeList = [];
36+
const queue = [];
37+
queue.push(vnode);
38+
while(queue.length !== 0){
39+
const node = queue.shift();
40+
nodeList.push(node);
41+
if(node.children){
42+
for(let i = 0; i < node.children.length; i ++){
43+
queue.push(node.children[i])
44+
}
45+
}
46+
return nodeList;
47+
}
48+
}
49+
50+
console.log(wideTraversal(vnode));

Cute-Gist/React/VDOM.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Virtual DOM
2+
// https://github.com/pfan123/Articles/issues/62
3+
4+
const createElement = (tagName, props, ...children) => {
5+
return {
6+
tagName, props, children
7+
}
8+
}
9+
10+
const vnode = createElement(
11+
'div',
12+
{className: 'leoBox'},
13+
createElement(
14+
'span',
15+
{className: 'leoItem'},
16+
createElement(
17+
'span',
18+
{className: 'leoIcon'},
19+
'这是 leoIcon'
20+
)
21+
),
22+
createElement(
23+
'span',
24+
{className: 'leoItem'},
25+
'这是 leoItem'
26+
)
27+
);
28+
29+
console.log(vnode)

0 commit comments

Comments
 (0)