Dashibase / lotion

An open-source Notion UI built with Vue 3
GNU General Public License v3.0
2.79k stars 132 forks source link

Prop mutation #64

Open johnpuddephatt opened 2 years ago

johnpuddephatt commented 2 years ago

Currently blocks are mutating props directly, e.g:

https://github.com/Dashibase/lotion/blob/b1a3ade1e8fd1dbcb9e490b9efb90b88b69cacb3/src/components/blocks/HeadingBlock.vue#L4

My understanding is that props are readonly and shouldn't be mutated, instead an event should be emitted back up to the parent, which should then reassign the new value at the top level (which then cascades back down to the component). This is Evan You's advice and it came up on Twitter in response to the announcement.

I'm happy to submit a PR showing this in practice if it's helpful but wanted to first ask in case there was something I'm missing.

(amazing work by the way, I'm really excited about Lotion's potential!)