@intlayer/docs 5.7.6 → 5.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/docs.entry.cjs +44 -238
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +44 -238
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -2
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_tanstack.md +457 -0
- package/docs/ar/packages/next-intlayer/index.md +0 -1
- package/docs/ar/packages/react-intlayer/index.md +0 -1
- package/docs/de/intlayer_with_tanstack.md +458 -0
- package/docs/de/packages/next-intlayer/index.md +0 -1
- package/docs/de/packages/react-intlayer/index.md +0 -1
- package/docs/en/intlayer_with_tanstack.md +452 -0
- package/docs/en/packages/next-intlayer/index.md +0 -1
- package/docs/en/packages/react-intlayer/index.md +0 -1
- package/docs/en-GB/intlayer_with_tanstack.md +457 -0
- package/docs/en-GB/packages/next-intlayer/index.md +0 -1
- package/docs/en-GB/packages/react-intlayer/index.md +0 -1
- package/docs/es/intlayer_with_tanstack.md +435 -0
- package/docs/es/packages/next-intlayer/index.md +0 -1
- package/docs/es/packages/react-intlayer/index.md +0 -1
- package/docs/fr/intlayer_with_tanstack.md +435 -0
- package/docs/fr/packages/next-intlayer/index.md +0 -1
- package/docs/fr/packages/react-intlayer/index.md +0 -1
- package/docs/hi/intlayer_with_tanstack.md +438 -0
- package/docs/hi/packages/next-intlayer/index.md +0 -1
- package/docs/hi/packages/react-intlayer/index.md +0 -1
- package/docs/it/intlayer_with_tanstack.md +457 -0
- package/docs/it/packages/next-intlayer/index.md +0 -1
- package/docs/it/packages/react-intlayer/index.md +0 -1
- package/docs/ja/intlayer_with_tanstack.md +457 -0
- package/docs/ja/packages/next-intlayer/index.md +0 -1
- package/docs/ja/packages/react-intlayer/index.md +0 -1
- package/docs/ko/intlayer_with_tanstack.md +457 -0
- package/docs/ko/packages/next-intlayer/index.md +0 -1
- package/docs/ko/packages/react-intlayer/index.md +0 -1
- package/docs/pt/intlayer_with_tanstack.md +457 -0
- package/docs/pt/packages/next-intlayer/index.md +0 -1
- package/docs/pt/packages/react-intlayer/index.md +0 -1
- package/docs/ru/intlayer_with_tanstack.md +458 -0
- package/docs/ru/packages/next-intlayer/index.md +0 -1
- package/docs/ru/packages/react-intlayer/index.md +0 -1
- package/docs/zh/intlayer_with_tanstack.md +435 -0
- package/docs/zh/packages/next-intlayer/index.md +0 -1
- package/docs/zh/packages/react-intlayer/index.md +0 -1
- package/package.json +9 -9
- package/src/generated/docs.entry.ts +44 -238
- package/docs/ar/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/ar/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/de/packages/next-intlayer/useIntlayerAsync.md +0 -262
- package/docs/de/packages/react-intlayer/useIntlayerAsync.md +0 -256
- package/docs/en/packages/next-intlayer/useIntlayerAsync.md +0 -239
- package/docs/en/packages/react-intlayer/useIntlayerAsync.md +0 -254
- package/docs/en-GB/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/en-GB/packages/react-intlayer/useIntlayerAsync.md +0 -257
- package/docs/es/packages/next-intlayer/useIntlayerAsync.md +0 -240
- package/docs/es/packages/react-intlayer/useIntlayerAsync.md +0 -276
- package/docs/fr/packages/next-intlayer/useIntlayerAsync.md +0 -238
- package/docs/fr/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/hi/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/hi/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/it/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/it/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/ja/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/ja/packages/react-intlayer/useIntlayerAsync.md +0 -268
- package/docs/ko/packages/next-intlayer/useIntlayerAsync.md +0 -260
- package/docs/ko/packages/react-intlayer/useIntlayerAsync.md +0 -271
- package/docs/pt/packages/next-intlayer/useIntlayerAsync.md +0 -238
- package/docs/pt/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/ru/packages/next-intlayer/useIntlayerAsync.md +0 -237
- package/docs/ru/packages/react-intlayer/useIntlayerAsync.md +0 -252
- package/docs/zh/packages/next-intlayer/useIntlayerAsync.md +0 -239
- package/docs/zh/packages/react-intlayer/useIntlayerAsync.md +0 -257
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2024-08-11
|
|
3
|
-
updatedAt: 2025-06-29
|
|
4
|
-
title: useIntlayerAsync 钩子文档 | react-intlayer
|
|
5
|
-
description: 查看如何使用 react-intlayer 包中的 useIntlayerAsync 钩子
|
|
6
|
-
keywords:
|
|
7
|
-
- useIntlayerAsync
|
|
8
|
-
- 字典
|
|
9
|
-
- 键
|
|
10
|
-
- Intlayer
|
|
11
|
-
- 国际化
|
|
12
|
-
- 文档
|
|
13
|
-
- Next.js
|
|
14
|
-
- JavaScript
|
|
15
|
-
- React
|
|
16
|
-
slugs:
|
|
17
|
-
- doc
|
|
18
|
-
- packages
|
|
19
|
-
- react-intlayer
|
|
20
|
-
- useIntlayerAsync
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# React 集成:`useIntlayerAsync` 钩子文档
|
|
24
|
-
|
|
25
|
-
`useIntlayerAsync` 钩子扩展了 `useIntlayer` 的功能,不仅返回预渲染的字典,还异步获取更新,非常适合那些在初始渲染后频繁更新本地化内容的应用程序。
|
|
26
|
-
|
|
27
|
-
## 概述
|
|
28
|
-
|
|
29
|
-
- **异步字典加载:**
|
|
30
|
-
在初次挂载时,`useIntlayerAsync` 会首先返回任何预先获取或静态打包的本地字典(就像 `useIntlayer` 一样),然后异步获取并合并任何新可用的远程字典。
|
|
31
|
-
- **进度状态管理:**
|
|
32
|
-
该钩子还提供了一个 `isLoading` 状态,指示何时正在获取远程字典。这使开发者能够显示加载指示器或骨架状态,从而提供更流畅的用户体验。
|
|
33
|
-
|
|
34
|
-
## 环境设置
|
|
35
|
-
|
|
36
|
-
Intlayer 提供了一个无头内容源管理(CSM)系统,使非开发人员能够无缝管理和更新应用内容。通过使用 Intlayer 直观的仪表盘,您的团队可以编辑本地化文本、图片及其他资源,而无需直接修改代码。这简化了内容管理流程,促进协作,并确保更新能够快速且轻松地完成。
|
|
37
|
-
|
|
38
|
-
开始使用 Intlayer:
|
|
39
|
-
|
|
40
|
-
1. **在 [https://intlayer.org/dashboard](https://intlayer.org/dashboard) 注册并获取访问令牌。**
|
|
41
|
-
2. **将凭证添加到您的配置文件中:**
|
|
42
|
-
在您的 React 项目中,使用您的凭证配置 Intlayer 客户端:
|
|
43
|
-
|
|
44
|
-
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
45
|
-
import type { IntlayerConfig } from "intlayer";
|
|
46
|
-
|
|
47
|
-
export default {
|
|
48
|
-
// ...
|
|
49
|
-
editor: {
|
|
50
|
-
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
51
|
-
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
52
|
-
},
|
|
53
|
-
} satisfies IntlayerConfig;
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
57
|
-
import { type IntlayerConfig } from "intlayer";
|
|
58
|
-
|
|
59
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
60
|
-
const config = {
|
|
61
|
-
// ...
|
|
62
|
-
editor: {
|
|
63
|
-
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
64
|
-
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export default config;
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
72
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
73
|
-
const config = {
|
|
74
|
-
// ...
|
|
75
|
-
editor: {
|
|
76
|
-
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
77
|
-
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
module.exports = config;
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
3. **推送新的本地化字典到 Intlayer:**
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
npx intlayer dictionary push -d my-first-dictionary-key
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
该命令会上传您的初始内容字典,使其可通过 Intlayer 平台进行异步获取和编辑。
|
|
91
|
-
|
|
92
|
-
## 在 React 中导入 `useIntlayerAsync`
|
|
93
|
-
|
|
94
|
-
在您的 React 组件中,导入 `useIntlayerAsync`:
|
|
95
|
-
|
|
96
|
-
```ts codeFormat="typescript"
|
|
97
|
-
import { useIntlayerAsync } from "react-intlayer";
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
```js codeFormat="esm"
|
|
101
|
-
import { useIntlayerAsync } from "react-intlayer";
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
```js codeFormat="commonjs"
|
|
105
|
-
const { useIntlayerAsync } = require("react-intlayer");
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## 参数
|
|
109
|
-
|
|
110
|
-
1. **`key`**:
|
|
111
|
-
**类型**:`DictionaryKeys`
|
|
112
|
-
用于标识本地化内容块的字典键。该键应在您的内容声明文件中定义。
|
|
113
|
-
|
|
114
|
-
2. **`locale`**(可选):
|
|
115
|
-
**类型**:`Locales`
|
|
116
|
-
您想要定位的特定语言环境。如果省略,钩子将使用当前 Intlayer 上下文中的语言环境。
|
|
117
|
-
|
|
118
|
-
3. **`isRenderEditor`**(可选,默认为 `true`):
|
|
119
|
-
**类型**:`boolean`
|
|
120
|
-
决定内容是否应准备好用于带有 Intlayer 编辑器覆盖层的渲染。如果设置为 `false`,返回的字典数据将不包含编辑器特定的功能。
|
|
121
|
-
|
|
122
|
-
## 返回值
|
|
123
|
-
|
|
124
|
-
该 Hook 返回一个字典对象,包含以 `key` 和 `locale` 为键的本地化内容。它还包括一个 `isLoading` 布尔值,指示是否正在获取远程字典。
|
|
125
|
-
|
|
126
|
-
## 在 React 组件中的示例用法
|
|
127
|
-
|
|
128
|
-
```tsx fileName="src/components/ComponentExample.tsx" codeFormat="typescript"
|
|
129
|
-
import { useEffect, type FC } from "react";
|
|
130
|
-
import { useIntlayerAsync } from "react-intlayer";
|
|
131
|
-
|
|
132
|
-
export const ComponentExample: FC = () => {
|
|
133
|
-
const { title, description, isLoading } = useIntlayerAsync("async-component");
|
|
134
|
-
|
|
135
|
-
useEffect(() => {
|
|
136
|
-
if (isLoading) {
|
|
137
|
-
console.log("内容正在加载...");
|
|
138
|
-
}
|
|
139
|
-
}, [isLoading]);
|
|
140
|
-
|
|
141
|
-
return (
|
|
142
|
-
<div>
|
|
143
|
-
{isLoading ? (
|
|
144
|
-
<div>
|
|
145
|
-
<h1>加载中…</h1>
|
|
146
|
-
<p>请稍候,内容正在更新。</p>
|
|
147
|
-
</div>
|
|
148
|
-
) : (
|
|
149
|
-
<div>
|
|
150
|
-
<h1>{title.value}</h1>
|
|
151
|
-
<p>{description.value}</p>
|
|
152
|
-
</div>
|
|
153
|
-
)}
|
|
154
|
-
</div>
|
|
155
|
-
);
|
|
156
|
-
};
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
```jsx fileName="src/components/ComponentExample.mjx" codeFormat="esm"
|
|
160
|
-
import { useEffect } from "react";
|
|
161
|
-
import { useIntlayerAsync } from "react-intlayer";
|
|
162
|
-
|
|
163
|
-
const ComponentExample = () => {
|
|
164
|
-
const { title, description, isLoading } = useIntlayerAsync("async-component");
|
|
165
|
-
|
|
166
|
-
useEffect(() => {
|
|
167
|
-
if (isLoading) {
|
|
168
|
-
console.log("内容正在加载...");
|
|
169
|
-
}
|
|
170
|
-
}, [isLoading]);
|
|
171
|
-
|
|
172
|
-
return (
|
|
173
|
-
<div>
|
|
174
|
-
{isLoading ? (
|
|
175
|
-
<div>
|
|
176
|
-
<h1>加载中…</h1>
|
|
177
|
-
<p>请稍候,内容正在更新。</p>
|
|
178
|
-
</div>
|
|
179
|
-
) : (
|
|
180
|
-
<div>
|
|
181
|
-
<h1>{title.value}</h1>
|
|
182
|
-
<p>{description.value}</p>
|
|
183
|
-
</div>
|
|
184
|
-
)}
|
|
185
|
-
</div>
|
|
186
|
-
);
|
|
187
|
-
};
|
|
188
|
-
</div>
|
|
189
|
-
)}
|
|
190
|
-
</div>
|
|
191
|
-
);
|
|
192
|
-
};
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
```jsx fileName="src/components/ComponentExample.csx" codeFormat="commonjs"
|
|
196
|
-
const { useEffect } = require("react");
|
|
197
|
-
const { useIntlayerAsync } = require("react-intlayer");
|
|
198
|
-
|
|
199
|
-
const ComponentExample = () => {
|
|
200
|
-
const { title, description, isLoading } = useIntlayerAsync("async-component");
|
|
201
|
-
|
|
202
|
-
useEffect(() => {
|
|
203
|
-
if (isLoading) {
|
|
204
|
-
console.log("内容正在加载...");
|
|
205
|
-
}
|
|
206
|
-
}, [isLoading]);
|
|
207
|
-
|
|
208
|
-
return (
|
|
209
|
-
<div>
|
|
210
|
-
{isLoading ? (
|
|
211
|
-
<div>
|
|
212
|
-
<h1>加载中…</h1>
|
|
213
|
-
<p>请稍候,内容正在更新。</p>
|
|
214
|
-
</div>
|
|
215
|
-
) : (
|
|
216
|
-
<div>
|
|
217
|
-
<h1>{title.value}</h1>
|
|
218
|
-
<p>{description.value}</p>
|
|
219
|
-
</div>
|
|
220
|
-
)}
|
|
221
|
-
</div>
|
|
222
|
-
);
|
|
223
|
-
};
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
**关键点:**
|
|
227
|
-
|
|
228
|
-
- 在初始渲染时,`title` 和 `description` 来自预先获取或静态嵌入的本地化字典。
|
|
229
|
-
- 当 `isLoading` 为 `true` 时,后台请求会获取更新的字典。
|
|
230
|
-
- 一旦请求完成,`title` 和 `description` 会更新为最新内容,`isLoading` 变回 `false`。
|
|
231
|
-
|
|
232
|
-
## 处理属性本地化
|
|
233
|
-
|
|
234
|
-
你也可以获取各种 HTML 属性的本地化值(例如,`alt`、`title`、`aria-label`):
|
|
235
|
-
|
|
236
|
-
```jsx
|
|
237
|
-
<img src={title.image.src.value} alt={title.image.alt.value} />
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
## 字典文件
|
|
241
|
-
|
|
242
|
-
所有内容键必须在你的内容声明文件中定义,以确保类型安全并防止运行时错误。这些文件支持 TypeScript 验证,确保你始终引用存在的键和本地化语言。
|
|
243
|
-
|
|
244
|
-
/// 设置内容声明文件的说明请参见 [这里](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/get_started.md)。
|
|
245
|
-
|
|
246
|
-
## 进一步信息
|
|
247
|
-
|
|
248
|
-
- **Intlayer 可视化编辑器:**
|
|
249
|
-
集成 Intlayer 可视化编辑器,直接从 UI 管理和编辑内容。更多详情请见 [这里](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)。
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
**总结**,`useIntlayerAsync` 是一个强大的 React 钩子,旨在通过将预渲染或预获取的字典与异步字典更新合并,提升用户体验并保持内容的新鲜度。通过利用 `isLoading` 和基于 TypeScript 的内容声明,您可以无缝地将动态的本地化内容集成到您的 React 应用程序中。
|
|
254
|
-
|
|
255
|
-
## 文档历史
|
|
256
|
-
|
|
257
|
-
- 5.5.10 - 2025-06-29:初始化历史
|