pull/15844/head
Rich Harris 2 months ago
parent 6afb9c6028
commit 16f960eba7

@ -169,37 +169,30 @@ export function push(props, runes = false, fn) {
* @returns {T} * @returns {T}
*/ */
export function pop(component) { export function pop(component) {
const context_stack_item = component_context; var context = /** @type {ComponentContext} */ (component_context);
if (context_stack_item !== null) { var effects = context.e;
if (component !== undefined) {
context_stack_item.x = component; if (effects !== null) {
} context.e = null;
const component_effects = context_stack_item.e;
if (component_effects !== null) { for (var effect of effects) {
var previous_effect = active_effect; create_user_effect(effect.fn);
var previous_reaction = active_reaction;
context_stack_item.e = null;
try {
for (var i = 0; i < component_effects.length; i++) {
var component_effect = component_effects[i];
set_active_effect(component_effect.effect);
set_active_reaction(component_effect.reaction);
create_user_effect(component_effect.fn);
}
} finally {
set_active_effect(previous_effect);
set_active_reaction(previous_reaction);
}
}
component_context = context_stack_item.p;
if (DEV) {
dev_current_component_function = context_stack_item.p?.function ?? null;
} }
context_stack_item.m = true;
} }
// Micro-optimization: Don't set .a above to the empty object
// so it can be garbage-collected when the return here is unused if (component !== undefined) {
return component || /** @type {T} */ ({}); context.x = component;
}
context.m = true;
component_context = context.p;
if (DEV) {
dev_current_component_function = context.p?.function ?? null;
}
return component ?? /** @type {T} */ ({});
} }
/** @returns {boolean} */ /** @returns {boolean} */

@ -186,6 +186,7 @@ export function user_effect(fn) {
// Non-nested `$effect(...)` in a component should be deferred // Non-nested `$effect(...)` in a component should be deferred
// until the component is mounted // until the component is mounted
var defer = var defer =
active_reaction === null &&
active_effect !== null && active_effect !== null &&
(active_effect.f & BRANCH_EFFECT) !== 0 && (active_effect.f & BRANCH_EFFECT) !== 0 &&
component_context !== null && component_context !== null &&

Loading…
Cancel
Save