MCPcopy
hub / github.com/sveltejs/svelte / update_effect

Function update_effect

packages/svelte/src/internal/client/runtime.js:434–488  ·  view source on GitHub ↗
(effect)

Source from the content-addressed store, hash-verified

432 * @returns {void}
433 */
434export function update_effect(effect) {
435 var flags = effect.f;
436
437 if ((flags & DESTROYED) !== 0) {
438 return;
439 }
440
441 set_signal_status(effect, CLEAN);
442
443 var previous_effect = active_effect;
444 var was_updating_effect = is_updating_effect;
445
446 active_effect = effect;
447 is_updating_effect = true;
448
449 if (DEV) {
450 var previous_component_fn = dev_current_component_function;
451 set_dev_current_component_function(effect.component_function);
452 var previous_stack = /** @type {any} */ (dev_stack);
453 // only block effects have a dev stack, keep the current one otherwise
454 set_dev_stack(effect.dev_stack ?? dev_stack);
455 }
456
457 try {
458 if ((flags & (BLOCK_EFFECT | MANAGED_EFFECT)) !== 0) {
459 destroy_block_effect_children(effect);
460 } else {
461 destroy_effect_children(effect);
462 }
463
464 execute_effect_teardown(effect);
465 var teardown = update_reaction(effect);
466 effect.teardown = typeof teardown === 'function' ? teardown : null;
467 effect.wv = write_version;
468
469 // In DEV, increment versions of any sources that were written to during the effect,
470 // so that they are correctly marked as dirty when the effect re-runs
471 if (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.deps !== null) {
472 for (var dep of effect.deps) {
473 if (dep.set_during_effect) {
474 dep.wv = increment_write_version();
475 dep.set_during_effect = false;
476 }
477 }
478 }
479 } finally {
480 is_updating_effect = was_updating_effect;
481 active_effect = previous_effect;
482
483 if (DEV) {
484 set_dev_current_component_function(previous_component_fn);
485 set_dev_stack(previous_stack);
486 }
487 }
488}
489
490/**
491 * Returns a promise that resolves once any pending state changes have been applied.

Callers 6

create_effectFunction · 0.90
legacy_pre_effect_resetFunction · 0.90
#traverseMethod · 0.90
flush_queued_effectsFunction · 0.90
flush_eager_effectsFunction · 0.90
unfreeze_derived_effectsFunction · 0.90

Calls 8

set_signal_statusFunction · 0.90
set_dev_stackFunction · 0.90
destroy_effect_childrenFunction · 0.90
execute_effect_teardownFunction · 0.90
update_reactionFunction · 0.85
increment_write_versionFunction · 0.85

Tested by

no test coverage detected