File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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 ) ) ;
Original file line number Diff line number Diff line change 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 )
You can’t perform that action at this time.
0 commit comments