Fix double execution of meteor properties functions #60
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #49 (partially)
As described in the issue, meteor properties functions (without
$lazy
) are executed twice during component creation. The reason for this behavior is that a function is first executed byvm.$watch()
to initialize Vue Watcher and then executed byTracker.autorun()
in order to initialize Computation.Proposed changes:
Tracker.autorun()
callback withcomputation.firstRun
condition.I don't really like this solution but it seems to be working without side effects. The drawback is an additional condition checking on each autorun execution.
@Akryum, I found several of your comments about separating the Tracker and Vue callbacks but I am not sure whether they are related to this PR or you meant a deeper integration. I must admit that my understanding of Watcher and Tracker insides is not enough to conclude whether proposed changes are safe, so I will be grateful for the PR review and possible comments.