Refine项目从3.x到4.x版本迁移指南

Refine项目从3.x到4.x版本迁移指南

refine 一个用于构建内部工具、管理面板、仪表盘和B2B应用程序的React框架,具有无与伦比的灵活性。 refine 项目地址: https://gitcode.com/gh_mirrors/re/refine

前言

Refine作为一款优秀的React框架,在3.x版本发布一年后迎来了重大更新。4.x版本针对开发者体验和功能简化进行了全面优化,使框架更加灵活,能够适应更广泛的使用场景。本文将详细介绍从3.x迁移到4.x版本的关键变化和迁移步骤。

自动迁移工具

推荐使用@refinedev/codemod工具自动完成大部分迁移工作:

npx @refinedev/codemod@latest refine3-to-refine4

该工具会自动处理大部分破坏性变更,但有以下已知限制:

  1. 无法正确处理TypeScript的实例化表达式
  2. 无法正确处理类型声明文件(.d.ts)
  3. 可能无法正确格式化包含React片段(<>...</>)的返回语句

遇到这些问题时,需要手动修改相关文件。

手动迁移步骤

包名变更

所有@pankod前缀的包已迁移至@refinedev组织:

npm uninstall @pankod/refine-core @pankod/refine-antd
npm i @refinedev/core @refinedev/antd

核心变更点

路由系统重构

4.x版本引入了全新的路由系统,主要变化包括:

  1. routerProvider变为可选,Refine现在可以不依赖路由使用
  2. 旧版路由提供器重命名为legacyRouterProvider
  3. 资源路由现在支持更灵活的路径定义
resources={[
    {
        name: "products",
        list: "/:tenantId/products",
        show: "/:tenantId/products/:id",
        edit: "/:tenantId/products/:id/edit",
    }
]}

资源定义优化

资源定义结构进行了简化:

resources={[
    {
        name: "products",
-       options: {
-           route: "my-products",
-           label: "My Products",
-       },
+       meta: {
+           label: "My Products",
+       }
    }
]}

认证提供器变更

旧版authProvider重命名为legacyAuthProvider

const App = () => {
    return (
        <Refine
            legacyAuthProvider={authProvider}
        />
    );
};

使用旧版认证提供器时,需要在hooks中添加兼容标记:

const login = useLogin({
    v3LegacyAuthProviderCompatible: true,
});

数据相关变更

数据提供器参数更新

getList方法参数进行了调整:

getList: ({
    pagination: {
+        mode: "off" | "server" | "client",
    },
-    hasPagination,
+    sorters,
-    sort,
+    meta,
-    metaData,
})

常用Hooks变更

  1. useListuseInfiniteList

    • 弃用config属性,改用独立属性
  2. useTable

    • 弃用initialCurrentinitialPageSize,改用pagination
    • 弃用sorter返回值,改用sorters
  3. useSelect

    • 默认禁用分页,需显式设置pagination.mode

UI相关变更

Ant Design版本升级

Refine 4.x要求使用Ant Design 5.x版本,升级前请先完成Ant Design的版本迁移。

组件变更

  1. <ReadyPage>组件已弃用,建议使用自定义页面替代
  2. 所有metaData属性更名为meta

迁移建议

  1. 首先尝试使用自动迁移工具
  2. 检查自动迁移后的代码,处理工具无法转换的部分
  3. 重点关注路由和资源定义的变更
  4. 逐步替换弃用的hooks和组件
  5. 测试应用功能,特别是路由和数据获取相关部分

通过以上步骤,您可以顺利将项目从Refine 3.x迁移到4.x版本,享受新版本带来的改进和优化。

refine 一个用于构建内部工具、管理面板、仪表盘和B2B应用程序的React框架,具有无与伦比的灵活性。 refine 项目地址: https://gitcode.com/gh_mirrors/re/refine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贡秀丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值