useCheckboxGroup
useCheckboxGroup hook allows you to manage an Ant Design Checkbox.Group component when records in a resource needs to be used as checkbox options.
Usage
We will demonstrate how to get data at the /tags endpoint from the https://api.fake-rest.refine.dev REST API.
{
[
{
id: 1,
title: "Driver Deposit",
},
{
id: 2,
title: "Index Compatible Synergistic",
},
{
id: 3,
title: "Plum",
},
];
}
import { useCheckboxGroup } from "@refinedev/antd";
import { Form, Checkbox } from "antd";
export const PostCreate: React.FC = () => {
const { checkboxGroupProps } = useCheckboxGroup<ITag>({
resource: "tags",
});
return (
<Form>
<Form.Item label="Tags" name="tags">
<Checkbox.Group {...checkboxGroupProps} />
</Form.Item>
</Form>
);
};
interface ITag {
id: number;
title: string;
}
All we have to do is pass the checkboxGroupProps it returns to the <Checkbox.Group> component.
useCheckboxGroup uses the useList hook for fetching data.

For more information, refer to the
useListdocumentation →
Options
resource
const { checkboxGroupProps } = useCheckboxGroup({
resource: "tags",
});
resource property determines which API resource endpoint to fetch records from dataProvider. It returns properly configured options values for checkboxes.
If you have multiple resources with the same name, you can pass the identifier instead of the name of the resource. It will only be used as the main matching key for the resource, data provider methods will still work with the name of the resource defined in the <Refine/> component.
For more information, refer to the
identifiersection of the<Refine/>component documentation →
For more information, refer to the Ant Design's Checkbox.Group component documentation →
defaultValue
const { selectProps } = useCheckboxGroup({
resource: "languages",
defaultValue: [1, 2],
});
selectedOptionsOrder
selectedOptionsOrder allows us to sort selectedOptions on defaultValue. It can be:
"in-place": sortselectedOptionsat the bottom. It is by default."selected-first": sortselectedOptionsat the top.
const { selectProps } = useCheckboxGroup({
resource: "languages",
defaultValue: [1, 2],
selectedOptionsOrder: "selected-first", // in-place | selected-first
});
The easiest way to select default values for checkbox fields is by passing in defaultValue.
optionLabel and optionValue
const { checkboxGroupProps } = useCheckboxGroup({
resource: "tags",
optionLabel: "title",
optionValue: "id",
});
optionLabel and optionValue allows you to change the values and appearances of your options. Default values are optionLabel = "title" and optionValue = "id".
These properties also support nested property access with Object path syntax.
const { options } = useCheckboxGroup({
resource: "categories",
optionLabel: "nested.title",
optionValue: "nested.id",
});
It's also possible to pass function to these props. These functions will receive item argument.
const { options } = useCheckboxGroup({
optionLabel: (item) => `${item.firstName} ${item.lastName}`,
optionValue: (item) => item.id,
});
searchField
Can be used to specify which field will be searched with value given to onSearch function.
const { onSearch } = useCheckboxGroup({ searchField: "name" });
onSearch("John"); // Searches by `name` field with value John.
By default, it uses optionLabel's value, if optionLabel is a string. Uses title field otherwise.
// When `optionLabel` is string.
const { onSearch } = useCheckboxGroup({ optionLabel: "name" });
onSearch("John"); // Searches by `name` field with value John.
// When `optionLabel` is function.
const { onSearch } = useCheckboxGroup({
optionLabel: (item) => `${item.id} - ${item.name}`,
});
onSearch("John"); // Searches by `title` field with value John.
filters
filters allows us to add filters while fetching the data. For example, if you want to list only the titles that are equal to "Driver Deposit":
const { checkboxGroupProps } = useCheckboxGroup({
resource: "tags",
filters: [
{
field: "title",
operator: "eq",
value: "Driver Deposit",
},
],
});
sorters
sorters allows us to sort the options. For example, if you want to sort your list according to title by ascending:
const { checkboxGroupProps } = useCheckboxGroup({
resource: "tags",
sorters: [
{
field: "title",
order: "asc",
},
],
});
fetchSize
fetchSize is the amount of records to fetch in checkboxes.
const { selectProps } = useCheckboxGroup({
resource: "languages",
fetchSize: 20,
});
queryOptions
Passing the queryOptions property allows us to set the useQuery options
const { checkboxGroupProps } = useCheckboxGroup({
resource: "tags",
queryOptions: {
onError: () => {
console.log("triggers when on query return Error");
},
},
});
pagination
pagination allows us to set page and items per page values.
For example, lets say that we have 1000 post records:
const { selectProps } = useCheckboxGroup({
resource: "categories",
pagination: { currentPage: 3, pageSize: 8 },
});
The listing will start from page 3, showing 8 records per page.
API Reference
Properties
| Property | Type | Description | Default |
|---|---|---|---|
resource ﹡ | | Resource name for API data interactions | |
successNotification | | Success notification configuration to be displayed when the mutation is successful. | '"There was an error creating resource (status code: |
errorNotification | | Error notification configuration to be displayed when the mutation fails. | '"There was an error creating resource (status code: |
meta | | Additional meta data to pass to the | |
liveMode | Whether to update data automatically ("auto") or not ("manual") if a related live event is received. The "off" value is used to avoid creating a subscription. |
| |
liveParams | Params to pass to liveProvider's subscribe method if liveMode is enabled. |
| |
dataProviderName | | Additional meta data to pass to the |
|
onLiveEvent | Callback to handle all related live events of this hook. |
| |
queryOptions | | react-query useQuery options | |
overtimeOptions | | ||
onSearch | | If defined, this callback allows us to override all filters for every search request. |
|
pagination | | Pagination option from |
|
filters | | Resource name for API data interactions | |
sorters | | Allow us to sort the options | |
optionLabel | | Set the option's label value |
|
optionValue | | Set the option's value |
|
searchField | | If provided |
|
selectedOptionsOrder | | Allow us to sort the selection options |
|
debounce | | The number of milliseconds to delay |
|
defaultValueQueryOptions | | react-query useQuery options | |
defaultValue | | Sets the default value |
Type Parameters
| Property | Description | Type | Default |
|---|---|---|---|
| TQueryFnData | Result data returned by the query function. Extends BaseRecord | BaseRecord | BaseRecord |
| TError | Custom error object that extends HttpError | HttpError | HttpError |
| TData | Result data returned by the select function. Extends BaseRecord. If not specified, the value of TQueryFnData will be used as the default value. | BaseRecord | TQueryFnData |
Example
npm create refine-app@latest -- --example field-antd-use-checkbox-group