| You can do complicated things with Svelte stores, but in my experience most of the time you only need something like this using a writable store: <script>
import {writable} from 'svelte/store';
const person = writable({name: 'Mark', zip: 63304}); function handleChange(event) {
const name = event.target.value;
person.set({...$person, name});
}
</script><input on:input={handleChange} value={$person.name} /> <div>
Hello, {$person.name} at {$person.zip}!
</div> Of course if person is only used inside this component, you would not use a store. If it is used in other components, you would typically define and export the store in another .js file and import it everywhere it is needed. My point is that this is a very simple way to share state between components and nowhere near as complex as the page you shared might indicate. That's because you do not need to use derived stores or custom stores. The simple writable store works in most cases. |
Also, this works with pojos and primitive values. What happens when you add class instances, relationships, children, etc?
For example in a project I was working I had geometrical figures in my reactive data model. With classes I could simply do:
With MobX this was super simple to implement. If I wanted to change the position of the rectangle I would simply modify the x and y observable properties.