我有很多模板组件,它们的使用方式彼此相似。在渲染到页面之前,模板组件被包裹在 graphql 中并连接到 redux。我想创建一个 HOC 来包装我的模板,这样我就不会每次都创建一个新容器来将模板连接到数据。像这样:
这是我的页面组件,我尝试用gqlList HOC包装AppointmentsListTemplate模板:
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
但是 graphql 连接器部分向我抛出了这个错误:
未捕获的类型错误:无法在新 eval (gqlList.js:22 ) 在 eval (createClassProxy.js:95) 在 Unknown (eval at proxyClass (createClassProxy.js:NaN), :4:17) 在 eval (ReactCompositeComponent.js:303) 在 measureLifeCyclePerf ( ReactCompositeComponent.js:73) 在 ReactCompositeComponentWrapper._constructComponentWithoutOwner
我究竟做错了什么?