mobxjs / mobx-state-tree

Full-featured reactive state management without the boilerplate
https://mobx-state-tree.js.org/
MIT License
6.9k stars 640 forks source link

Add failing test for missing snapshot processor node argument #2183

Open airhorns opened 4 weeks ago

airhorns commented 4 weeks ago

What does this PR do and why?

This adds a failing test for a bug introduced in https://github.com/mobxjs/mobx-state-tree/pull/2116 . There, we started passing the node down to snapshot post processors to allow them to do fancy stuff, but, this mechanism is broken for deeply nested types that are lazily instantiated. We only instantiate the children of an array type when it is accessed or snapshotted for the first time (as best I can tell), and when this happens, the node.storedValue property is null and so the snapshot processor doesn't get the node.

The fix (I think) is to ensure that deeply nested nodes with snapshot post processors are eagerly created before we start snapshotting, but I am struggling to get that to work. Any insight would be appreciated!

Relevant past issues and PRs:

coolsoftwaretyler commented 4 weeks ago

This is a great place to start! I will put some thought on it shortly.