@@ -91,21 +91,25 @@ Component.prototype.render = Fragment;
91
91
/**
92
92
* @param {import('./internal').Internal } internal The internal to rerender
93
93
*/
94
- function rerender ( internal ) {
95
- if ( ~ internal . flags & MODE_UNMOUNTING && internal . flags & DIRTY_BIT ) {
96
- const vnode = createElement ( internal . type , internal . props ) ;
97
- vnode . props = internal . props ;
94
+ function renderQueuedInternal ( internal ) {
95
+ // Don't render unmounting/unmounted trees:
96
+ if ( internal . flags & MODE_UNMOUNTING ) return ;
98
97
99
- patch ( internal , vnode , getParentDom ( internal ) ) ;
100
- commitRoot ( internal ) ;
101
- }
98
+ // Don't render trees already rendered in this pass:
99
+ if ( ! ( internal . flags & DIRTY_BIT ) ) return ;
100
+
101
+ const vnode = createElement ( internal . type , internal . props ) ;
102
+ vnode . props = internal . props ;
103
+
104
+ patch ( internal , vnode , getParentDom ( internal ) ) ;
105
+ commitRoot ( internal ) ;
102
106
}
103
107
104
108
/**
105
109
* The render queue
106
110
* @type {Array<import('./internal').Internal> }
107
111
*/
108
- let rerenderQueue = [ ] ;
112
+ let renderQueue = [ ] ;
109
113
110
114
/*
111
115
* The value of `Component.debounce` must asynchronously invoke the passed in callback. It is
@@ -126,22 +130,22 @@ export function enqueueRender(internal) {
126
130
if (
127
131
( ! ( internal . flags & DIRTY_BIT ) &&
128
132
( internal . flags |= DIRTY_BIT ) &&
129
- rerenderQueue . push ( internal ) &&
130
- ! process . _rerenderCount ++ ) ||
133
+ renderQueue . push ( internal ) &&
134
+ ! processRenderQueue . _rerenderCount ++ ) ||
131
135
prevDebounce !== options . debounceRendering
132
136
) {
133
137
prevDebounce = options . debounceRendering ;
134
- ( prevDebounce || setTimeout ) ( process ) ;
138
+ ( prevDebounce || setTimeout ) ( processRenderQueue ) ;
135
139
}
136
140
}
137
141
138
142
/** Flush the render queue by rerendering all queued components */
139
- function process ( ) {
140
- while ( ( len = process . _rerenderCount = rerenderQueue . length ) ) {
141
- rerenderQueue . sort ( ( a , b ) => a . _depth - b . _depth ) ;
143
+ function processRenderQueue ( ) {
144
+ while ( ( len = processRenderQueue . _rerenderCount = renderQueue . length ) ) {
145
+ renderQueue . sort ( ( a , b ) => a . _depth - b . _depth ) ;
142
146
while ( len -- ) {
143
- rerender ( rerenderQueue . shift ( ) ) ;
147
+ renderQueuedInternal ( renderQueue . shift ( ) ) ;
144
148
}
145
149
}
146
150
}
147
- let len = ( process . _rerenderCount = 0 ) ;
151
+ let len = ( processRenderQueue . _rerenderCount = 0 ) ;
0 commit comments