渲染为 article
容器标签由 as 决定,正文样式不变。
这是一段来自后端的富文本。段落、标题、列表与引用都由容器统一接管,调用方不需要为每个标签指定样式。
书页翻动的声音,是图书馆唯一允许的喧哗。
import { Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Prose className="max-w-xl">
<h2>狼と香辛料</h2>
<p>
这是一段来自后端的富文本。段落、标题、列表与引用都由容器统一接管,调用方不需要为每个标签指定样式。
</p>
<blockquote>书页翻动的声音,是图书馆唯一允许的喧哗。</blockquote>
<ul>
<li>第一卷 启航</li>
<li>第二卷 远洋</li>
</ul>
</Prose>
)
}
import { Prose } from '@hina-ui/react'
把一段 HTML 放入容器,其中的原生标签自动获得排版样式。渲染 Markdown、接口返回的富文本或编辑器产出的内容时使用它。
一段来自接口的 HTML。
import { Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Prose
className="max-w-lg"
dangerouslySetInnerHTML={{ __html: '<h3>标题</h3><p>一段来自接口的 HTML。</p>' }}
/>
)
}
标题、段落、列表、描述列表、引用、代码、表格、分隔线、标记与按键都在接管范围内,呈现与对应组件一致。
import { Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Prose className="max-w-xl">
<p>
段落中可以有
<strong>加粗</strong>、<a href="#elements">链接</a>、<code>行内代码</code>、
<mark>标记</mark>与<kbd>Ctrl</kbd>按键。
</p>
<ol>
<li>有序列表</li>
<li>与组件的呈现一致</li>
</ol>
<dl>
<dt>格式</dt>
<dd>EPUB、PDF</dd>
</dl>
<hr />
<table>
<thead>
<tr>
<th>卷次</th>
<th>页数</th>
</tr>
</thead>
<tbody>
<tr>
<td>第一卷</td>
<td>288</td>
</tr>
</tbody>
</table>
</Prose>
)
}
as 指定渲染成哪个标签,默认为 div。整篇文章可以用 article。
容器标签由 as 决定,正文样式不变。
import { Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Prose as="article" className="max-w-lg">
<h3>渲染为 article</h3>
<p>容器标签由 as 决定,正文样式不变。</p>
</Prose>
)
}
元素之间有纵向间距,但容器内第一个元素的上外边距与最后一个元素的下外边距会被清除,因此放入卡片时不会多出一段空白。
容器内第一个与最后一个元素的外边距被清除,因此贴合卡片的内边距。
import { Card, Prose } from '@hina-ui/react'
export default function Demo() {
return (
<Card padded className="w-full max-w-lg">
<Prose>
<h3>首尾不留外边距</h3>
<p>容器内第一个与最后一个元素的外边距被清除,因此贴合卡片的内边距。</p>
</Prose>
</Card>
)
}
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
as | string | Component | 'div' | 渲染的元素或组件 |
asChild | boolean | false | 不渲染自身,合并至唯一的子元素 |
className | string | — | 追加至根元素的类名 |
| 属性 | 说明 |
|---|---|
children | 富文本的内容 |