重现步骤 🕹
链接到实时示例: https://codesandbox.io/p/devbox/fragrant-forest-gn5rr6?file=%2Fsrc%2Fapp%2Fpage.tsx%3A1%2C1
import { Box } from '@mui/material'
async function FooBar() {
return <Box>foobar</Box>
}
export default function Page() {
return (
<Box>
<FooBar />
</Box>
)
}
当前行为 😯
抛出以下错误:
app-index.js:32 警告:属性类型失败:向 children
提供无效的 prop ForwardRef(Box)
,期望的是 ReactNode。
预期行为 🤔
不报错 =D
上下文 🔦
非常喜欢 MUI,但这阻止我们在服务器组件中使用它
你的环境 🌎
系统:
操作系统:macOS 13.6
二进制文件:
Node: 18.17.0 - ~/.nodenv/versions/18.17.0/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 9.6.7 - ~/.nodenv/versions/18.17.0/bin/npm
浏览器:
Chrome: 119.0.6045.159
Edge: 未找到
Safari: 16.6
8条答案
按热度按时间ztmd8pv51#
获取Box组件的prop类型警告。https://codesandbox.io/p/sandbox/fragrant-forest-gn5rr6?file=%2Fsrc%2Fapp%2Fpage.tsx%3A1%2C1
6ss1mwsb2#
这是导致错误的PropType:https://github.com/mui/material-ui/blob/master/packages/mui-material/src/Box/Box.js#L26
我猜我们可以把它改成
oneOfType
,但我不确定应该是什么🤔我相信这在"纯"的React中不起作用,只在Next.js中起作用:
ivqmmu1c3#
我想知道prop-types包是否支持将RSC作为子元素的模式。
c6ubokkw4#
可以确认这种情况确实发生过,不仅在
Box
组件中出现,其他组件也出现了。然而,除了控制台本身的错误之外,似乎没有任何问题,一切都按预期进行。如果你将服务器组件 Package 在一个普通的
div
中,例如:那么错误就会消失。虽然这并不理想,因为会产生一个无用的额外div,但到目前为止效果还不错。
um6iljoc5#
我找到了另一个基于@FernandVEYRIER的解决方案,不需要额外的div元素。
j2cgzkjk6#
这是导致错误的PropType:https://github.com/mui/material-ui/blob/master/packages/mui-material/src/Box/Box.js#L26
我想我们可以将其更改为
oneOfType
,但我不确定应该是什么🤔我相信这在普通的React中不起作用,只在Next.js中起作用:
那么我们是否可以将其更改为
any
?3zwtqj6y7#
请查看 facebook/prop-types#407
ma8fv8wu8#
我们可以: