# @elgorditosalsero/react-gtm-hook 中文文档

规范地址：https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/

版本：2\.7\.2
npm 元数据更新时间：2023-05-03T15:31:19.568Z
中文译文更新时间：2026-11-13T12:25:12.031Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40elgorditosalsero/react-gtm-hook
原文对照：https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/?lang=original
项目主页：https://github.com/elgorditosalsero/react-gtm-hook#readme
源码仓库：https://github.com/elgorditosalsero/react-gtm-hook

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：73.5 kB，14 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=12
- 运行依赖：0 个
- peer 依赖：react ^16\.13\.1 \|\| ^17\.0\.0 \|\| 18
- 首次发布：2020-05-26T17:15:48.378Z
- 最新版本发布：2023-05-03T15:31:19.393Z
- 近 30 天下载量：136874（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：23（近 12 个月 0 个）

## 中文简介

通过 Hook 轻松管理 Google 标签管理器

## 安装

```sh
npm install @elgorditosalsero/react-gtm-hook
```

也可以使用：`pnpm add @elgorditosalsero/react-gtm-hook`、`yarn add @elgorditosalsero/react-gtm-hook`、`bun add @elgorditosalsero/react-gtm-hook`

## README

# 矿工想要, 请实现 如果你感兴趣

![React Google Tag Manager Hook](https://user-images.githubusercontent.com/65770455/82931604-76c14380-9f87-11ea-8d36-4ab2bc94b1d3.png)

# 反应 Google 标签管理器 Hook

#### 方便使用 Google 标签管理器

有了这个自定义的钩子,您可以轻松地使用0配置的 Google 标签管理器,只需要通过 **容器标识**来啊!

## 特征

-   [安装](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-installation)
-   [如何使用](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-how-to-use)
-   [API 密码](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-api)
-   [示例](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-example)
-   [许可证](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-license)

## 安装

```bash
$ yarn add @elgorditosalsero/react-gtm-hook
# or
$ npm install @elgorditosalsero/react-gtm-hook
```

## 如何使用

## 注意一点

从v2.0起 我利用上下文在全球分享GTM为"虎克"的配置. 如果你正在寻找 1.x医生,检查 [这个](https://github.com/elgorditosalsero/react-gtm-hook/tree/v1.0.6)

### 基础

```jsx
import { GTMProvider } from '@elgorditosalsero/react-gtm-hook'

const App = () => {
  const gtmParams = { id: 'GTM-ID' }

  return (
    <GTMProvider state={gtmParams}>
      <p>My awesome app</p>
    </GTMProvider>
  )
}
```

### 带有自定义的 DataLayer 名称

```jsx
import { GTMProvider } from '@elgorditosalsero/react-gtm-hook'

const App = () => {
  const gtmParams = {
    id: 'GTM-ID',
    dataLayerName: 'customDataLayerName'
  }

  return (
    <GTMProvider state={gtmParams}>
      <p>My awesome app</p>
    </GTMProvider>
  )
}
```

### 带有自定义 DataLayer 名称和初始值

```jsx
import { GTMProvider } from '@elgorditosalsero/react-gtm-hook'

const App = () => {
  const gtmParams = {
    id: 'GTM-ID',
    dataLayer: {
      'my-custom-value': 'value',
      'my-awesome-value': 'awesome'
    },
    dataLayerName: 'customDataLayerName'
  }

  return (
    <GTMProvider state={gtmParams}>
      <p>My awesome app</p>
    </GTMProvider>
  )
}
```

### 使用 GTM 自定义环境

```jsx
import { GTMProvider } from '@elgorditosalsero/react-gtm-hook'

const App = () => {
  const gtmParams = {
    id: 'GTM-ID',
    environment: {
      gtm_auth: 'my-auth-token',
      gtm_preview: 'preview-id'
    }
  }

  return (
    <GTMProvider state={gtmParams}>
      <p>My awesome app</p>
    </GTMProvider>
  )
}
```

_寻找 `gtm_auth` 财务报告和审定财务报表 `gtm_preview` 您自定义 GTM 环境的值, 请转到 Admin > 您的容器 > 环境 > 您的环境 > 动作 > 在您的 Google 标签管理器控制台中获取片段 。 您可以在片段中找到您需要的值 ._

### 向 GTM 发送数据

```jsx
import { GTMProvider, useGTMDispatch } from '@elgorditosalsero/react-gtm-hook'

const App = () => {
  const gtmParams = {
    id: 'GTM-ID',
    dataLayerName: 'customDataLayerName'
  }

  return (
    <GTMProvider state={gtmParams}>
      <div>
        <p>My awesome app</p>
        <MyAwesomeComp />
      </div>
    </GTMProvider>
  )
}

const MyAwesomeComp = () => {
  const sendDataToGTM = useGTMDispatch()

  const handleClick = () => sendDataToGTM({ event: 'awesomeButtonClicked', value: 'imAwesome' })

  return (
    <div>
      <p>My Awesome Comp</p>
      <button onClick={handleClick}>My Awesome Button</button>
    </div>
  )
}
```

## API 密码

`useGTM` 提供干净易用 API 配置 GTM

### 输入

| 名称 | 类型 | 需求 | 资讯 |
| --- | --- | --- | --- |
| 编号 | `String` | **对** | 标记管理器的容器ID, 它看起来像: `GTM-0T0TTT` |
| 数据 Layer | `Object` | **无** | 自定义数据Layer的值, 如 `{'my-init-prop': 'value'}` |
| 数据LayerName | `String` | **无** | 自定义数据Layer的名称, 如果不通过, 它将是默认 : `dataLayer` |
| 环境 | `Object` | **无** | 提供 `gtm_auth` 财务报告和审定财务报表 `gtm_preview` 使用自定义 GTM 环境的参数 |
| 无 | `String` | **无** | 服务器生成了非ce. 见 [https://developers.google.com/tag-manager/web/csp 页面存档备份,存于互联网档案馆](https://developers.google.com/tag-manager/web/csp) |
| 插入脚本 | `Boolean` | **无** | 默认( e)`true`:决定GTM脚本是否被注入,参见#30. 还允许通过在流中转接真实值来延迟注入 |
| 自定义域 | `String` | **无** | 默认( e)`https://www.googletagmanager.com`: 提供自定义域以使用自定义 GTM 域 |
| 自定义脚本Name | `String` | **无** | 默认( e)`gtm.js`: 提供自定义脚本Name 以使用自定义文件名 |

### 已发送DataTOGTM

| 名称 | 类型 | 需求 | 资讯 |
| --- | --- | --- | --- |
| 数据 | `Object` | **对** | 发送到 GTM 的对象数据, 例如 `{event: 'my-awesome-event', 'my-custom-var': 'value'}` |

## 示例

你可以看到这个自由的活在奉献上 [站点](https://elgorditosalsero-react-gtm-hook.netlify.app/)

## 许可证

`react-gtm-hook` 根据麻省理工学院的许可

## 贡献者

[![All Contributors](https://img.shields.io/badge/all_contributors-12-orange.svg?style=flat-square)](https://npmcn.com/package/%40elgorditosalsero/react-gtm-hook/#readme-contributors-)

感谢这些伟大的人[emoji 密钥](https://allcontributors.org/docs/en/emoji-key):

<table><tbody><tr><td align="center"><a href="https://www.linkedin.com/in/guidoporcaro/" rel="nofollow noopener noreferrer"><img alt="Guido Porcaro" src="https://avatars2.githubusercontent.com/u/65770455?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>圭多·波尔卡罗</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=elgorditosalsero" title="Code" rel="nofollow noopener noreferrer">💻</a> <a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=elgorditosalsero" title="Documentation" rel="nofollow noopener noreferrer">📖</a></td><td align="center"><a href="https://benyap.com/" rel="nofollow noopener noreferrer"><img alt="Ben Yap" src="https://avatars3.githubusercontent.com/u/19235373?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>本亚普</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=benyap" title="Code" rel="nofollow noopener noreferrer">💻</a> <a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=benyap" title="Documentation" rel="nofollow noopener noreferrer">📖</a> <a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=benyap" title="Tests" rel="nofollow noopener noreferrer">⚠️</a></td><td align="center"><a href="https://cristianlivella.com/" rel="nofollow noopener noreferrer"><img alt="Cristian Livella" src="https://avatars.githubusercontent.com/u/27968888?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>克里斯蒂安·利韦拉</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=cristianlivella" title="Code" rel="nofollow noopener noreferrer">💻</a></td><td align="center"><a href="https://github.com/jafin" rel="nofollow noopener noreferrer"><img alt="Jason Finch" src="https://avatars.githubusercontent.com/u/127927?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>杰森・芬奇</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=jafin" title="Code" rel="nofollow noopener noreferrer">💻</a></td><td align="center"><a href="https://segredo.dev/" rel="nofollow noopener noreferrer"><img alt="Italo" src="https://avatars.githubusercontent.com/u/11761170?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>意大利语Name</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=iaurg" title="Code" rel="nofollow noopener noreferrer">💻</a></td><td align="center"><a href="https://github.com/thecoder93" rel="nofollow noopener noreferrer"><img alt="Gianluca La Manna" src="https://avatars.githubusercontent.com/u/3246694?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>吉安卢卡·拉·曼纳</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=thecoder93" title="Documentation" rel="nofollow noopener noreferrer">📖</a></td><td align="center"><a href="https://github.com/daisy1754" rel="nofollow noopener noreferrer"><img alt="Kazuki" src="https://avatars.githubusercontent.com/u/980077?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>和树</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=daisy1754" title="Code" rel="nofollow noopener noreferrer">💻</a></td></tr><tr><td align="center"><a href="https://github.com/perfectial-stepan-mandryka" rel="nofollow noopener noreferrer"><img alt="Stepan Mandryka" src="https://avatars.githubusercontent.com/u/95344107?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>斯捷潘·曼德利卡</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=perfectial-stepan-mandryka" title="Code" rel="nofollow noopener noreferrer">💻</a></td><td align="center"><a href="http://simonsmith.io/" rel="nofollow noopener noreferrer"><img alt="Simon Smith" src="https://avatars.githubusercontent.com/u/360703?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>西蒙·史密斯</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=simonsmith" title="Documentation" rel="nofollow noopener noreferrer">📖</a></td><td align="center"><a href="https://github.com/listiani13" rel="nofollow noopener noreferrer"><img alt="Listiani" src="https://avatars.githubusercontent.com/u/24470609?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>利斯蒂亚尼</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=listiani13" title="Code" rel="nofollow noopener noreferrer">💻</a> <a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=listiani13" title="Documentation" rel="nofollow noopener noreferrer">📖</a></td><td align="center"><a href="https://github.com/pkulcsarnr" rel="nofollow noopener noreferrer"><img alt="pkulcsarnr" src="https://avatars.githubusercontent.com/u/84968286?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>缓冲器</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=pkulcsarnr" title="Code" rel="nofollow noopener noreferrer">💻</a> <a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=pkulcsarnr" title="Documentation" rel="nofollow noopener noreferrer">📖</a></td><td align="center"><a href="https://github.com/sin-to-jin" rel="nofollow noopener noreferrer"><img alt="sin" src="https://avatars.githubusercontent.com/u/5368888?v=4?s=100" width="100px;" loading="lazy" decoding="async" referrerpolicy="no-referrer"><br><sub><b>罪恶</b></sub></a><br><a href="https://github.com/elgorditosalsero/react-gtm-hook/commits?author=sin-to-jin" title="Code" rel="nofollow noopener noreferrer">💻</a></td></tr></tbody></table>

本项目遵循 [全部贡献者](https://github.com/all-contributors/all-contributors) 规格。 任何捐款都欢迎!

## 常见问题

### @elgorditosalsero/react-gtm-hook 是什么？

通过 Hook 轻松管理 Google 标签管理器

### 如何安装 @elgorditosalsero/react-gtm-hook？

在项目目录运行 npm install @elgorditosalsero/react-gtm-hook，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（^16\.13\.1 \|\| ^17\.0\.0 \|\| 18）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @elgorditosalsero/react-gtm-hook 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @elgorditosalsero/react-gtm-hook 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @elgorditosalsero/react-gtm-hook 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=12。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @elgorditosalsero/react-gtm-hook 可以商用吗？

@elgorditosalsero/react-gtm-hook 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @elgorditosalsero/react-gtm-hook 的下载量有多少？

根据 npm 官方下载统计，@elgorditosalsero/react-gtm-hook 在 2026/10/14 – 2026/11/12 这 30 天内被下载 136,874 次，日均约 4,562 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @elgorditosalsero/react-gtm-hook 还在维护吗？

最新版本 2\.7\.2 发布于 2023/05/03（3 年前）；至今共发布 23 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/05/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

