# General Translation React SDKs (gt-react, gt-next): useRegionSelector
URL: https://generaltranslation.com/zh/docs/react/reference/hooks/use-region-selector.mdx
---
title: useRegionSelector
description: 使用 General Translation gt-react 构建自定义区域切换器。useRegionSelector API 参考。
---
`useRegionSelector` 钩子会返回构建自定义区域选择器所需的数据和处理函数:当前活动区域、可用区域、区域元数据,以及更新区域或区域设置的函数。
*可在 `gt-react` 和 `gt-react-native` 中使用。示例从 `gt-react` 导入;请改为从你所使用的框架包中导入。*
*注意:`gt-next` 和 `gt-tanstack-start` 不导出此项。*
## 概览 [#overview]
调用 `useRegionSelector`,并将其返回值接入你自己的 UI。
```tsx
'use client';
import { useRegionSelector } from 'gt-react';
export default function CustomRegionSelector() {
const { region, setRegion, regions, regionData } = useRegionSelector({ // [!code highlight]
customMapping: { US: { name: 'United States', emoji: '🇺🇸' } }, // [!code highlight]
});
return (
);
}
```
*注意:`useRegionSelector` 仅可在客户端使用,且必须在 [``](/docs/react/reference/components/gt-provider) 下使用。如果你不需要自定义 UI,请改用 [``](/docs/react/reference/components/region-selector) 组件。*
## 工作原理 [#how-it-works]
该钩子会返回当前选定区域、区域的有序列表、包含显示元数据的 `regionData` 映射,以及用于设置区域和区域设置的函数。当未提供 `regions` 时,可用区域会根据支持的区域设置推断出来。
## 参数 [#parameters]
`useRegionSelector` 接受一个可选的配置对象。
| 参数 | 描述 | 类型 | 可选 | 默认值 |
| ---------------------------------------------- | ------------------------ | ---------- | -- | ------ |
| [`regions`](#regions) | 要显示的 ISO 3166 区域代码子集。 | `string[]` | 是 | 自动推断 |
| [`customMapping`](#custom-mapping) | 为各区域自定义显示名称、emoji 或区域设置。 | `object` | 是 | — |
| [`prioritizeCurrentLocaleRegion`](#prioritize) | 将当前区域设置对应的区域排在最前面。 | `boolean` | 是 | `true` |
| [`sortRegionsAlphabetically`](#sort) | 按显示名称的字母顺序对区域进行排序。 | `boolean` | 是 | `true` |
### `regions` [#regions]
**类型** `string[]` · **可选** · **默认值** 自动推断
要显示的 ISO 3166 区域代码。省略时,会根据支持的区域设置自动推断。
### `customMapping` [#custom-mapping]
**类型** `object` · **可选**
用于将区域代码映射到自定义显示数据。每个值都可以是字符串 (显示名称) ,也可以是包含 `name`、`emoji` 和/或 `locale` 属性的对象。
### `prioritizeCurrentLocaleRegion` [#prioritize]
**Type** `boolean` · **可选** · **默认值** `true`
当为 `true` 时,列表中会优先显示与当前区域设置匹配的区域。
### `sortRegionsAlphabetically` [#sort]
**类型** `boolean` · **可选** · **默认值** `true`
当为 `true` 时,区域将按显示名称的字母顺序进行排序。
## 返回值 [#returns]
**类型** `object`
| 字段 | 描述 | 类型 |
| -------------- | ----------------------------------------------- | --------------------------------------- |
| `region` | 当前选中的区域代码。 | `string \| undefined` |
| `setRegion` | 更新选中的区域。 | `(region: string \| undefined) => void` |
| `regions` | 可用的区域代码。 | `string[]` |
| `regionData` | 区域代码到显示数据 (`code`、`name`、`emoji`、`locale`) 的映射。 | `Map` |
| `locale` | 当前的区域设置。 | `string` |
| `setLocale` | 更新区域设置。 | `(locale: string) => void` |
| `localeRegion` | 当前区域设置对应的 ISO 3166 区域代码。 | `string` |
## 注意事项 [#notes]
* `useRegionSelector` 仅限客户端使用。
* 如需现成的下拉菜单,请使用 [``](/docs/react/reference/components/region-selector)。
* 如需对应的区域设置版本,请参阅 [`useLocaleSelector`](/docs/react/reference/hooks/use-locale-selector)。