首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使SSR与fluentui /Remix运行协同工作?

如何使SSR与fluentui /Remix运行协同工作?
EN

Stack Overflow用户
提问于 2021-12-23 04:31:53
回答 1查看 420关注 0票数 4

如何安装fluent UI与混合运行反应?我认为这一点很重要,可以在这里讨论,因为它是在社区中采用office-UI-fabric的绊脚石。

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 22:03:06

在深入了解了FluentUI和Remix的文档和一些github问题之后,这是一种行之有效的方法。

  1. 编辑root.tsx.将{typeof document === "undefined" ? "__STYLES__" : null}添加到head标记中。在关闭正文标记.
  2. 编辑entry.server.tsx之前添加
  3. ,以包括:

代码语言:javascript
复制
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,
  })
}

  1. 重新启动混音应用程序

参考文献:

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导入页面,并在任何函数之外调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70457672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档