Skip to main content
Version: 4.xx.xx

useResource

useResource is used to get the resources array that you defined in <Refine>. It also returns the resource object. You can pass a resource name or identifier to match a resource or it will return the resource object that matches the current route.

If you pass a resource name or identifier to useResource, it will return the resource object that matches the name or identifier. If there is no match, a temporary resource will be created with the provided name or identifier.

Usage

Without parameters

If you don't pass any parameter to useResource, it will return the resource object that matches the current route by default. If there is no match, the resource will be undefined.

import { useResource } from "@refinedev/core";

const { resources, resource, action, id } = useResource();

With a resource name or identifier

If you pass a resource name or identifier to useResource, it will return the resource object that matches the name or identifier. If there is no match, a temporary resource will be created with the provided name or identifier.

import { useResource } from "@refinedev/core";

const { resource } = useResource("posts");

Return Values

resources

An array of resources that you defined in <Refine>.

resource

The resource object.

resourceName

Resource name of the resource object.

id
deprecated

Use useResourceParams instead.

id parameter of the current route.

action
deprecated

Use useResourceParams instead.

action from the current route if there is a match.

select

The function allows you to retrieve a resource object and matched identifier by providing either a resource name or identifier. By default, if there is no match for the given name or identifier, the function will return the resource object and identifier associated with the provided value.

If you don't pass any parameter to useResource, it will try to infer the resource from the current route. If there is no match, the resource and identifier will be undefined.

The function also accepts a second parameter force which is true by default. If you set it to false, it will not return a resource object and identifier if there is no match.

identifier

Identifier value for the current resource, this can either be the identifier property or the name property of the resource.

API Reference

Properties

PropertyTypeDescriptionDefault
resourceName

resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618

string

Determines which resource to use for redirection

resourceNameOrRouteName

string

Determines which resource to use for redirection

Resource name that it reads from route

recordItemId

resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618

Adds id to the end of the URL

Return value

DescriptionType
resourcesIResourceItem[]
resourceIResourceItem | undefined
resourceNamestring | undefined
idBaseKey
actionundefined | "list" | "create" | "edit" | "show" | "clone"
select(resourceName: string, force?: boolean) => { resource: IResourceItem | undefined, identifier: string | undefined}
identifierstring | undefined

Interfaces

interface IResourceComponents {
list?:
| string
| React.ComponentType<any>
| { component: React.ComponentType<any>; path: string };
create?:
| string
| React.ComponentType<any>
| { component: React.ComponentType<any>; path: string };
edit?:
| string
| React.ComponentType<any>
| { component: React.ComponentType<any>; path: string };
show?:
| string
| React.ComponentType<any>
| { component: React.ComponentType<any>; path: string };
}

interface IResourceItem extends IResourceComponents {
name: string;
identifier?: string;
meta?: MetaProps;
}