pull/18062/merge
Rich Harris 4 months ago
parent b5be33b152
commit da2ab64f52

@ -23,7 +23,8 @@ import {
push_reaction_value,
is_destroying_effect,
update_effect,
remove_reactions
remove_reactions,
write_version
} from '../runtime.js';
import { equals, safe_equals } from './equality.js';
import * as e from '../errors.js';
@ -384,11 +385,13 @@ export function execute_derived(derived) {
* @returns {void}
*/
export function update_derived(derived) {
derived.rv = write_version;
var old_value = derived.v;
var value = execute_derived(derived);
if (!derived.equals(value)) {
derived.wv = increment_write_version();
derived.wv = write_version;
// in a fork, we don't update the underlying value, just `batch_values`.
// the underlying value will be updated when the fork is committed.

@ -238,7 +238,7 @@ export function internal_set(source, value, updated_during_traversal = null) {
}
}
source.wv = increment_write_version();
source.wv = source.rv = increment_write_version();
// For debugging, in case you want to know which reactions are being scheduled:
// log_reactions(source);

@ -259,8 +259,6 @@ export function update_reaction(reaction) {
}
try {
reaction.wv = reaction.rv = write_version;
reaction.f |= REACTION_IS_UPDATING;
var fn = /** @type {Function} */ (reaction.fn);
var result = fn();
@ -464,10 +462,13 @@ export function update_effect(effect) {
destroy_effect_children(effect);
}
effect.rv = write_version;
execute_effect_teardown(effect);
var teardown = update_reaction(effect);
effect.teardown = typeof teardown === 'function' ? teardown : null;
effect.wv = write_version;
effect.wv = write_version; // TODO should this be assigned before the update?
// In DEV, increment versions of any sources that were written to during the effect,
// so that they are correctly marked as dirty when the effect re-runs

Loading…
Cancel
Save