简体   繁体   English

将带有道具的组件作为道具传递给另一个组件

[英]Passing a component with props to another component as prop

I'm trying to pass a component with props to another component as prop.我正在尝试将带有道具的组件作为道具传递给另一个组件。 I mean, something like this:我的意思是,像这样:

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} />    
  )
}

In the example above I'd like to pass the component MockedProvider (and its props) to another component (App) as a prop.在上面的示例中,我想将组件 MockedProvider(及其道具)作为道具传递给另一个组件(App)。 I've succeeded passing components without props, however, the same approach isn't working when the component has props.我已经成功地传递了没有道具的组件,但是,当组件有道具时,同样的方法不起作用。

Every time I try to do that I get the following error message:每次我尝试这样做时,都会收到以下错误消息:

Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

In my mind is kind of a strange pattern.在我的脑海里是一种奇怪的模式。 I would probably do something like this, to pass everything in as child elements:我可能会做这样的事情,将所有内容作为子元素传递:

 return ( <App routes={routes}> <MockedProvider mocks={mocks} addTypename={false} /> <ThemeProvider> <BrowserRouter basename="/app"> {renderRoutes(routes)} </BrowserRouter> </ThemeProvider> </MockedProvider> </App> )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM