【发布时间】:2020-05-03 11:22:54
【问题描述】:
我正在尝试将带有道具的组件作为道具传递给另一个组件。我的意思是,像这样:
const App = ({ routes, graphqlProvider, themeProvider }) => {
const GraphqlProvider = graphqlProvider
const ThemeProvider = themeProvider
return (
<GraphqlProvider>
<ThemeProvider>
<BrowserRouter basename="/app">
{renderRoutes(routes)}
</BrowserRouter>
</ThemeProvider>
</GraphqlProvider>
)
}
const MyApp = () => {
const mockedProvider = <MockedProvider mocks={mocks} addTypename={false} />
return (
<App routes={routes} themeProvider={ThemeProvider} graphqlProvider={mockedProvider} />
)
}
在上面的示例中,我想将组件 MockedProvider(及其道具)作为道具传递给另一个组件(App)。我已经成功地传递了没有 props 的组件,但是,当组件有 props 时,同样的方法不起作用。
每次我尝试这样做时都会收到以下错误消息:
Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
【问题讨论】:
-
mocks未定义 -
@Andy 我删除了导入和其他声明以使其变得简单。
-
尝试使用 React Childs
-
我之前没有见过这种模式,即将组件 X 作为道具传递给组件 Y。为什么不直接将组件 X 导入组件 Y 的文件并在那里使用它呢?
标签: javascript reactjs