popcodeorg / popcode

An HTML/CSS/JavaScript editor for use in the classroom
MIT License
189 stars 140 forks source link

Refactor instructions editor to follow controlled component pattern #1397

Open jwang1919 opened 6 years ago

jwang1919 commented 6 years ago

Currently the instructions editor is an uncontrolled component, which is to say that intermediate in-progress editing state is stored only in the DOM.

React officially recommends using controlled components instead, which stores intermediate state in React (in our case Redux) state, and has the form value mirror the props given. This is probably the right approach here (but maybe it’s not! Further research may be called for).

Probably best not to sweat this too much until #1394 is done (or at least concurrently with that task).

meg2208 commented 6 years ago

FYI this turns out to be a prerequisite for https://github.com/popcodeorg/popcode/issues/1394 since we are using SimpleMDE (via react plugin: since we are using https://github.com/RIP21/react-simplemde-editor) and it would get messy to extract the state from the DOM. Feel free to assign me to this as well. I will include it in that PR.