テンプレートコンポーネントはたくさんあり、使用方法はお互いに似ています。 ページにレンダリングされる前に、テンプレートコンポーネントはgraphqlでラップされ、reduxに接続されます。 テンプレートをラップするHOCを作成して、テンプレートをデータに接続するたびに新しいコンテナを作成しないようにします。そのよう :HOCを使用してgraphqlとreduxでコンポーネントをラップすることはできますか?
import React from 'react'
import { AdminTemplate, AppointmentsListTemplate } from 'components'
import { gqlList } from 'containers'
import {qyListAppointments} from 'services/gqlQueries/Appointments'
const AppointmentsListTemplateWrapped = gqlList(AppointmentsListTemplate, qyListAppointments)
const AdminAppointmentsPage = (props) => {
return (
<AdminTemplate>
<AppointmentsListTemplateWrapped />
</AdminTemplate>
)
}
export default AdminAppointmentsPage
そして、ここでは私のgqlList HOCです:
import React, {Component} from 'react'
import { graphql } from 'react-apollo'
import { connect } from 'react-redux'
import { saveQueryVars } from 'store/helper/actions'
const gqlList = (WrappedComponent, gqlQuery) => {
const GQL = graphql(gqlQuery)(WrappedComponent)
return connect(null, {
saveQueryVars,
})(GQL)
}
export default gqlList
ここ
は私がgqlList HOCでAppointmentsListTemplateテンプレートをラップしようとする私のページの構成要素であり、
しかし、graphqlコネクタの部分は私にこのエラーを投げます:
Uncaught TypeError: Cannot read property 'displayName' of undefined at getDisplayName (react-apollo.browser.umd.js:250) at wrapWithApolloComponent (react-apollo.browser.umd.js:266) at new eval (gqlList.js:22) at eval (createClassProxy.js:95) at instantiate (createClassProxy.js:103) at Unknown (eval at proxyClass (createClassProxy.js:NaN), :4:17) at eval (ReactCompositeComponent.js:303) at measureLifeCyclePerf (ReactCompositeComponent.js:73) at ReactCompositeComponentWrapper._constructComponentWithoutOwner
私は間違っていますか?
'AppointmentsListTemplate'は、それをあなたに渡すと定義されていないようです。あなたは '{AppointmentsListTemplate}から 'components''の何かが出てくるのを確認できますか? –
はい、それは来る。 私はこの方法をレンダリングしようとすると、それが動作: 'のconst AdminAppointmentsPage =(小道具)=> { リターン( AdminTemplate> ) }' –