React Context通过撰写

时间:2018-05-25 00:11:14

标签: reactjs react-apollo

我正在使用React Context在组件(操作)之间进行通信

Context.Consumer驻留在组件的return()部分内,因此不会为组件提供道具(除非将Consumer放在父组件中,但我们又回到了道具钻孔的不良之处)

Apollo客户端由Apollo的compose()应用于结果可用于组件道具但更重要的是,道具的变化导致Apollo重新获取

使用Context,这个自动重新获取途径被打破了,除了将整个GraphQl文档放入组件(在Context.Consume之后)以在Context引入操作时手动执行重新提取时,我没有别的办法。

这是模式的彻底改变,我真的很想知道我是否错过了一些大局?

const Child = ({ gqlGetData }) => {
  if (gqlGetData.loading) return "..."
  const { componentData } = gqlGetData
  return (
    <AppControl.Consumer>
      {appControl => (
        <React.Fragment>
              ---component rendering logic here ---
              ---but needs also refetch logic and GraphQl document---
            )}
        </React.Fragment>
      )}
    </AppControl.Consumer>
  )
}

0 个答案:

没有答案