如何安装fluent UI与混合运行反应?我认为这一点很重要,可以在这里讨论,因为它是在社区中采用office-UI-fabric的绊脚石。
发布于 2022-02-23 22:03:06
在深入了解了FluentUI和Remix的文档和一些github问题之后,这是一种行之有效的方法。
root.tsx.将{typeof document === "undefined" ? "__STYLES__" : null}添加到head标记中。在关闭正文标记.entry.server.tsx之前添加import { renderToString } from "react-dom/server"
import { RemixServer } from "remix"
import type { EntryContext } from "remix"
import { resetIds, Stylesheet } from "@fluentui/react"
const sheet = Stylesheet.getInstance()
export default function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext
) {
resetIds()
let markup = renderToString(
<RemixServer context={remixContext} url={request.url} />
)
markup = markup.replace(
"__STYLES__",
`<style data-merge-styles="true">${sheet.getRules(true)}</style>`
)
markup = markup.replace(
"__SCRIPTS__",
`<script type="text/javascript">
window.FabricConfig = window.FabricConfig || {};
window.FabricConfig.serializedStylesheet = ${sheet.serialize()};
</script>`
)
responseHeaders.set("Content-Type", "text/html")
return new Response("<!DOCTYPE html>" + markup, {
status: responseStatusCode,
headers: responseHeaders,
})
}参考文献:
https://remix.run/docs/en/v1/guides/styling#css-in-js-libraries https://github.com/microsoft/fluentui/wiki/Server-side-rendering-and-browserless-testing#nextjs-setup https://github.com/microsoft/fluentui/issues/11411
如果您也想加载流利的图标,请将initializeIcons导入页面,并在任何函数之外调用它。
https://stackoverflow.com/questions/70457672
复制相似问题