如何解决Next.js集成Fluent UI时的TypeScript lint错误?
Next.js集成Fluent UI SSR时RendererProvider类型错误:Property 'children'不存在
问题描述
按照Fluent UI SSR文档在Next.js中集成时,构建出现类型错误:
Type '{ children: Element; renderer: any; }' is not assignable to type 'IntrinsicAttributes & RendererProviderProps'. Property 'children' does not exist on type 'IntrinsicAttributes & RendererProviderProps'
错误原因
当前版本的RendererProvider API已变更,不再支持通过children属性传递组件树,原文档示例可能适配旧版本,导致代码与当前库的类型定义冲突。
解决方案
移除RendererProvider,将渲染器实例直接传递给FluentProvider的renderer属性即可完成渲染器注入,修正后的_app.js代码如下:
import { createDOMRenderer, SSRProvider, FluentProvider, webLightTheme } from '@fluentui/react-components' import '../styles/styles.css' function MyApp({ Component, pageProps, renderer }) { return ( <SSRProvider> <FluentProvider theme={webLightTheme} renderer={renderer || createDOMRenderer()} > <Component {...pageProps} /> </FluentProvider> </SSRProvider> ) } export default MyApp
服务端渲染补充配置
如果需要在服务端渲染场景(如getServerSideProps/getStaticProps)中使用,需在页面的服务端逻辑中创建SSR渲染器并传递给页面props:
// 页面文件(如pages/index.js) import { createSSRRenderer } from '@fluentui/react-components'; export async function getServerSideProps() { const renderer = createSSRRenderer(); return { props: { renderer } }; }
说明
Fluent UI v9后续版本调整了渲染器的注入方式,FluentProvider已支持直接接收renderer参数,无需再通过RendererProvider作为容器包裹组件树。
内容的提问来源于stack exchange,提问作者Hermes
相关产品推荐
相关产品推荐

