我希望能够在 Astro 中拥有一个动态页面来呈现 Astro 组件。我深入研究了文档和代码,但找不到像下面这样的函数(Astro.render
)。理想情况下,我可以将属性传递给它。我正在寻找类似的东西react.renderToString
.
import Example from './components/Example.astro'
export async function get() {
return {
body: Astro.render(Example)
};
}
更新:我认为这里的每个答案都是错误的。给定一个 astro 文件,我想要一个函数node
运行时 astro 框架独立,可以获取 astro 文件并简单地返回Response
(因为我知道 astro 文件可以从 front-matter 返回响应)和或HTML
细绳?我认为它可以是一个像这样的元组[res, htmlString]
。就像可以转换 Markdown 文件一样,astro 文件也应该能够被处理。
使用 Slots 将 Astro 组件渲染为 html 字符串
Astro 中确实存在渲染为 html 字符串的功能,但是对于插槽,如果将组件传递到另一个 Wrapper/Serialiser 中,则可以轻松获取其 html 字符串
工作示例
-
github 仓库https://github.com/MicroWebStacks/astro-examples#16_html-string https://github.com/MicroWebStacks/astro-examples#16_html-string
-
代码沙箱https://stackblitz.com/github/MicroWebStacks/astro-examples/tree/main/16_html-string https://stackblitz.com/github/MicroWebStacks/astro-examples/tree/main/16_html-string
Usage
这是 Wrapper 组件的主体,它用于突出显示,但也使用 Fragment 组件进行渲染
---
const html = await Astro.slots.render('default');
import { Code } from 'astro/components';
---
<Fragment set:html={html} />
<Code code={html} lang="html" />
用法如下
in e.g. index.astro
---
import Card from '../components/Card.astro';
import StringWrapper from '../components/StringWrapper.astro';
...
---
<StringWrapper>
<Card title="Test" />
</StringWrapper>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)