refine
tip
- 接口设计,抽象逻辑值得参考
- refinedev/refine
- MIT, React
- A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility.
- Headless CRUD 组件
- 支持 NextJS, Remix
- 默认提供 antd, mui, mantine, chakra
- 支持集成 ReactTable, KBar, React Hook Form
- ACL - cerbos, casbin
- Data Provider - RESTful, GQL, appwrite, nestjs, supabase, medusa
- Live Providev- appwrite, ably, socket.io, supabase
 
- @refinedev/nextjs-router
- @nestjsx/crud-request
 
- @aliemir/react-live
- sucrase
- prism-react-renderer
 
npm add @refinedev/core
# inferencer
npm add @refinedev/inferencer @refinedev/react-hook-form @refinedev/react-table @tanstack/react-table
# antd
npm add @refinedev/antd antd dayjs
组件
export interface IResourceComponents {
  list?: ResourceRouteComposition;
  create?: ResourceRouteComposition;
  clone?: ResourceRouteComposition;
  edit?: ResourceRouteComposition;
  show?: ResourceRouteComposition;
}
Notes
- Router -> Resource
- Resource 定义包含了 Path
- 使用 Resource 定义生成路由
- /NAME/ACTION/:id
- createResourceRoutes
 
- 自动从当前 Path 识别 Resource
- matchResourceFromRoute
- 先生成所有 route -> {action,resource}
- 通过 Segment 匹配
- 从结果选择一个最接近的
 
 
- matchResourceFromRoute
- 识别到了 Resource 再推导具体的页面
- 列表、详情、创建、编辑
 
 
- 上下文/Context - 扩展点
- refine
- resource
- router
- 方法: go, back, parse, Link
- 实现: react-router, nextjs, remix router
 
- router-picker- 用于支持 legacy router
- translation - i18n
- 方法: translate, changeLocale, getLocale
- Hooks: useTranslate, useSetLocale, useGetLocale
 
- undoable queue
- unsaved warn
- access control - 访问控制 - casbin、casl、cerbos、 accesscontrol.js
- useCan
- <CanAccess />
- action
- list, create, edit, delete, show
 
 
- audit log
- 方法
- create
- get - 返回列表
- update - 可为 Log 加名字,作为 milestone
 
- useLog,- useLogList
 
- 方法
- auth
- 必须方法: login, check, logout, onError
- 可选方法: register, forgotPassword, updatePassword, getPermissions, getIdentity
- https://refine.dev/docs/api-reference/core/providers/auth-provider/
 
- data
- 实现: simple rest, graphql, nestjs CRUD, airtable, strapi, supabase, hasura, appwrite, medusa
- medusa
 
- live - 数据实时更新
- 方法: subscribe, unsubscribe, publish
- Hooks: useSubscription, usePublish
- 实现: ably, supabase, hasura, appwrite, nhost
 
- notification
- 方法: open, close
 
 
- 组件
- Provider - antd, mui, mantine, chakra
 
- useResource
- resources 所有
- resource - 当前
- resourceName
- id
- action
- select
- identifier - 相同 Resource 识别
 
Data Provider
- IDataContextProvider
- getList -> useList, useInfiniteList
- create -> useCreate
- update -> useUpdate
- deleteOne -> useDeleteOne
- getOne -> useOne
- getMany -> useMany
- createMany -> useCreateMany
- updateMany -> useUpdateMany
- deleteMany -> useDeleteMany
- getApiUrl -> useApiUrl
- custom -> useCustom
 
- Many 接口可选
- @refinedev/simple-rest
- ${apiUrl}/${resource}-- [{id}]
 
SDK
- @refinedev/sdk
- const useSdk = (): { sdk: Client; config: IConnectContext }- IConnectContext {baseUrl,clientId,resourcesName}
 
- IConnectContext