MediumPro challengeJavaScriptTypeScript

Form Reducer

ReactFormsReducers

Implement a form reducer handling these actions:

  • { type: 'change', field, value } — update single field.
  • { type: 'reset' } — back to initial.
  • { type: 'submit' } — set submitted: true.

State shape: { values: {...}, submitted: boolean }.

solve(initialValues, actions) returns final state.

Sample tests

Test #1Change one field
Input: [{"name":""},[{"type":"change","field":"name","value":"Alice"}]]
Output: {"values":{"name":"Alice"},"submitted":false}
Test #2Change then reset
Input: [{"a":"x"},[{"type":"change","field":"a","value":"y"},{"type":"reset"}]]
Output: {"values":{"a":"x"},"submitted":false}
Test #3Submit
Input: [{"x":""},[{"type":"submit"}]]
Output: {"values":{"x":""},"submitted":true}
Test #4Multi-field then submit
Input: [{"a":"","b":""},[{"type":"change","field":"a","value":"1"},{"type":"change","field":"b","value":"2"},{"type":"submit"}]]
Output: {"values":{"a":"1","b":"2"},"submitted":true}
Test #5No actions
Input: [{"k":"init"},[]]
Output: {"values":{"k":"init"},"submitted":false}