В чем разница между Formik и Redux Form
Что проверяют
Понимаете ли вы, где должно жить состояние формы и во что обходится хранить его в глобальном сторе. Почти всегда следом спрашивают, что бы вы взяли для форм в новом проекте сегодня.
Как отвечать
Главное различие в том, где хранится состояние:
- Redux Form: значения, ошибки и флаги
touchedлежат в Redux-сторе под редюсеромform, форма подключается через HOCreduxForm(), поля через<Field>. Каждое нажатие клавиши этоdispatchэкшена и проход через редюсеры и всех подписчиков; - Formik: состояние локально в компоненте, API через
<Formik>или хукuseFormik, валидация функциейvalidateили схемой Yup вvalidationSchema. Redux ему не нужен.
Дальше скажите про актуальность. Redux Form фактически заброшен: его автор сам советует для новых проектов свою следующую библиотеку, React Final Form, а стайлгайд Redux прямо рекомендует не держать в сторе состояние ввода. Formik жив, но развивается медленно, и у него известная проблема: при изменении любого поля перерисовывается вся форма. Поэтому сегодня частый выбор это React Hook Form: неконтролируемые поля через register, точечные перерисовки, схемы через резолверы для Yup и Zod.
Если данные формы нужны другим частям приложения, их кладут в стор на onSubmit, а не держат там каждую букву.
Где спотыкаются
Повторяют, что Redux Form подходит для «сложных форм в больших приложениях». Сложность формы не требует глобального стора, а цена в перерисовках на каждом вводе остаётся.
Утверждают, что Formik не перерисовывает всю форму. Как раз перерисовывает: все поля читают один контекст, и без FastField или мемоизации тяжёлые поля тормозят ввод.
Сравнивают две библиотеки и не называют современную альтернативу. Интервьюер ждёт, что вы знаете про React Hook Form и объясните, почему контролируемые поля в форме на сотню полей дороже.