跳转到内容
搜索文档

渲染

最后更新 查看 MarkdownAgent 设置

The Render component is used 4089 times on 1960 pages.

See all examples of pages that use Render

Used 4089 times.

Pages

Partials

Render 组件允许我们在页面上包含 "partial"(一种可重用的 Markdown 片段)。

它还接受可用作部分(partial)内变量的参数,以便即使在不同用法之间需要微小差异的内容也可以转换为部分(partial)。

组件

import { Render } from "~/components";

<Render
	file="simple-props"
	product="style-guide"
	params={{
		name: "world",
	}}
/>

输入

  • file string

    这应该是部分(partial)的名称,不包含所在目录或文件扩展名。例如,/partials/style-guide/hello.mdx 将是 file="hello"

  • product string

    这应该是 src/partials 内的文件夹。

  • params objectoptional

    如果您希望替换部分(partial)内的值,可以传递可在部分中引用的 params。请参阅属性

属性

在 frontmatter 中定义预期属性

Render 组件的 params 属性中定义的任何内容都可以在部分(partial)内部使用,使用 JavaScript 表达式

为了防止遗漏必需的属性,任何依赖于 params 的部分(partial)都应在部分的 frontmatter 中定义 params。这应该是一个字符串数组,与您预期的属性名称匹配。如果属性是可选的,例如用于条件渲染内容,请在名称末尾添加 ?

---
params:
  - product
  - deprecated?
---

对于下面的每个示例,您可以打开下拉列表以查看部分(partial)的内容。

作为纯字符串的属性

以下示例将渲染 Hello, world!

simple-props.mdx

---
params:
  - name
---

你好,{props.name}!
import { Render } from "~/components";

<Render file="simple-props" product="style-guide" params={{ name: "world" }} />

Markdown 语法中的属性

使用 JavaScript 表达式时,您现在处于 "JSX 内部",无法使用传统的 Markdown 语法。同样,您不能在 Markdown 语法内部使用 JavaScript 表达式。

理想情况下,您不应在属性中使用 Markdown 语法,例如 **strong** or [text](link)。如果使用 JSX 不可行,可以使用接受 text 属性的 Markdown 组件。

MDX 文档包含了常见 Markdown 语法与其等效 JSX 元素的映射。

粗体 (Strong)

strong-in-props.mdx

---
params:
  - dont
  - do
---

**不要这样做!**

{props.dont}

**要这样做!**

<strong>{props.do}</strong>
import { Render } from "~/components";

<Render
	file="strong-in-props"
	product="style-guide"
	params={{ do: "Text", dont: "**Text**" }}
/>

link-in-props.mdx

---
params:
  - link
---

**不要这样做!**

这将链接到 `/style-guide/components/%7Bprops.link%7D`

[Markdown 链接]({props.link})

**要这样做!**

这将链接到 `style-guide/components/render/#links`

<p>
	<a href={props.link}>JSX 链接</a>
</p>
import { Render } from "~/components";

<Render
	file="link-in-props"
	product="style-guide"
	params={{
		link: "/style-guide/components/render/#links",
	}}
/>

图像 (Images)

image-in-props.mdx

---
params:
  - image
---

**不要这样做!**

`![替代文本]({props.image})`

**请这样做!**

<img src={props.image} alt="Alt text" />
import { Render } from "~/components";

<Render
	file="image-in-props"
	product="style-guide"
	params={{ image: "/logo.svg" }}
/>

代码块 (Code blocks)

code-in-props.mdx

---
params:
  - code
---

import { Code } from "~/components";

#### 行内

**不要这样做!**

`{props.code}`

**请这样做!**

<p>
	<code>{props.code}</code>
</p>

<hr />

#### 代码块

**不要这样做!**

```js
{
	props.code;
}
```

**请这样做!**

<Code code={props.code} lang="js" />
import { Render } from "~/components";

<Render
	file="code-in-props"
	product="style-guide"
	params={{ code: "export const foo = 'bar';" }}
/>

条件渲染内容的属性

您可以在 JavaScript 表达式中表示的任何内容都可以用于您的条件逻辑中。

这可以是 与 (&&) 运算符三元 (? ... : ... ) 运算符,以下示例同时使用了这两者。

optional-props.mdx

---
params:
  - product
  - deprecated?
---

{
props.deprecated && (
<p>
<strong>
{props.product} 已弃用,请使用替代产品。
</strong>
</p>
)
}

{
props.product === "Thing Three" ? (
<p>欢迎来到我们的 Thing Three 发布倒计时!</p>
) : (
<p>欢迎来到 {props.product} 落地页。</p>
)
}
import { Render } from "~/components";

<Render
	file="optional-props"
	product="style-guide"
	params={{ product: "Thing", deprecated: true }}
/>

<hr />

<Render
	file="optional-props"
	product="style-guide"
	params={{ product: "Thing Two" }}
/>

<hr />

<Render
	file="optional-props"
	product="style-guide"
	params={{ product: "Thing Three" }}
/>

这篇文档对您有帮助吗?