zoukankan      html  css  js  c++  java
  • Redux-form vs formik vs react-hook-form

    React 最流行的三个 form 库

    • redux-form, formikreact-hook-form

    Package size

    • redux-form 26.4k
    • formik 15k
    • react-hook-form 8.7k

    第三方表单验证

    • redux-form 不支持,需手动验证
    • formik 支持,可以使用 Yup schema 验证
    • react-hook-form 支持多种第三方验证,像 Yup, Joi, Superstruct

    性能

    测试发现:

    • redux-form 性能优异,虽然大家都不喜欢它
    • formikField 组件在大型的 form 表单中会出现性能问题,可以使用 FastField 组件改善
    • react-hook-form 在非受控组件中表现最好但是不会触发 re-render, 但是如果触发了 re-render 性能比不上 redux-formformik

    Npm 下载量

    如何迁移

    使用 redux-form 的时候,form values 都是存储下 redux中, 你可以在任何一个地方拿到它,但是迁移到 formik 或者 react-hook-form, 该如何在 form 外层拿到 values 呢?

    • 方案一:提升状态,假设有 B,C 两个组件,B 组件装的是 Form Field, C 组件是负责 submit 的 button, 那么需要在 B, C 组件外面包裹一个 A 组件, 让 A 组件处理 B 组件的表单更新, 然后将 values 传到给 C 组件。 缺点是如果表单比较重,组件 A 需要处理大量逻辑, 而此工作本应该是由 B 来做。
    • 方案二:使用 ref
      我更倾向于方案一。

    结论

    从趋势图中可以看到目前 formik 应用最广, react-hook-form 上升很快,redux-form 不建议上车。

    优点 缺点
    formik 支持 class component
    可以注册非 input 的 field
    当用户输入时验证所有字段
    大型表单中性能不好
    hooks API 有很多限制
    github 存在很多 issues
    react-hook-form API 基于 hooks, code 体验很好
    性能比较优异
    issues相对少
    不支持没有相应 input 的 field
    只支持验证正在编辑的field
    API 更新比较频繁

    或许当前 formik 才是最好的选择,当然如果你想尝鲜不妨试试 react-hook-form

    以上翻译自同事分享并编辑

  • 相关阅读:
    STOAdiary20110312抉择
    STOA静夜思
    STOAOO
    STOAdiary20110316翻译的一天
    STOAdiary20110318疲倦与激情
    STOAdiary20110314平静的一天
    Silverlight入门
    Postgres远程访问配置
    [收藏]Jquery客户端拖拽排序方法
    整理的邮件一个邮件发送类
  • 原文地址:https://www.cnblogs.com/billyu/p/13792908.html
Copyright © 2011-2022 走看看