Branch
<Branch> 组件 API 参考
概览
<Branch> 组件可为翻译添加条件逻辑。
const status = 'active';
<Branch branch={status}
active={<p>用户处于活跃状态。</p>}
inactive={<p>用户处于非活跃状态。</p>}
/>将一个 value 传入 branch 参数后,系统会根据你提供的键将其匹配到对应的输出 value。
参考
Props
Prop
Type
[key]: string 语法表示可用于各个潜在分支的任意键。
例如,可以将 active 和 inactive 等分支作为参数添加。
| Prop | Description |
|---|---|
branch | 要渲染的分支名称。 |
children | 当未找到匹配分支时要渲染的后备内容。 |
[key]: string | 代表给定分支值可能内容的分支。每个键对应一个分支,其值为要渲染的内容。 |
返回值
包含与指定分支对应内容或 fallback 内容的 JSX.Element。
抛出
未提供或提供的 branch 属性无效时,将抛出 Error。
示例
基本用法
<Branch> 需要针对 branch 属性的每个可能取值输出不同的结果。
在此示例中,使用 user.hairColor 的值来确定输出。
我们定义了 black、brown 和 blonde 这几个属性,以匹配 user.hairColor 的可能取值。
import { Branch } from 'gt-react';
export default function HairColor({ user }) {
return (
<Branch branch={user.hairColor}
black={<p>他们的头发是深色的。</p>}
brown="他们的头发是棕色的。" // (如果需要,也可以传递字符串)
blonde={<p>他们的头发是浅色的。</p>}
/>
);
}回退内容
如果没有任何 prop 与传递给 branch 的 value 匹配,则始终使用 children 作为回退内容。
import { Branch } from 'gt-react';
export default function HairColor({ user }) {
return (
<Branch branch={user.hairColor}
black={<p>他们的头发是深色的。</p>}
brown={<p>他们的头发是棕色的。</p>}
blonde={<p>他们的头发是浅色的。</p>}
>
<p>他们的头发颜色未知。</p> // [!code highlight]
</Branch>
);
}翻译 <Branch>
若要翻译内容,只需将其包裹在 <T> 组件中。
import { T, Branch } from 'gt-react';
export default function HairColor({ user }) {
return (
<T id="example"> // [!code highlight]
<Branch branch={user.hairColor}
black={<p>他们的头发是深色的。</p>}
brown={<p>他们的头发是中间色调。</p>}
blonde={<p>他们的头发是浅色的。</p>}
>
<p>头发颜色未知。</p>
</Branch>
</T>
);
}添加变量
如果你想在 branch 中渲染动态值,请将它们包裹在 <Currency>、<DateTime>、<Num> 或 <Var> 组件中。
import { Branch, T, Var } from 'gt-react';
export default function HairColor({ user }) {
return (
<T id="example">
<Branch branch={user.hairColor}
black={<p>他们的头发是深色的。</p>}
brown={<p>他们的头发是棕色的。</p>}
blonde={<p>他们的头发是浅色的。</p>}
>
<p>未处理的发色:<Var>{user.hairColor}</Var></p> // [!code highlight]
</Branch>
</T>
);
}注意事项
- 分支的键可以是与 branch 属性匹配的任意字符串。这种灵活性便于将
<Branch>适配于各种用例。 - 将
<Branch>与其他组件配合使用,例如用于翻译的<T>,以及用于动态内容的变量组件,以构建丰富且本地化的界面。
下一步
- 如需更高级的用法与示例,请参见使用分支组件。
本指南如何?