reasonml-community / reason-apollo-hooks

Deprecated in favor of https://github.com/reasonml-community/graphql-ppx
https://reasonml-community.github.io/reason-apollo-hooks/
MIT License
137 stars 28 forks source link

Support for subscribeToMore on query #120

Open Ejhfast opened 4 years ago

Ejhfast commented 4 years ago

Does the library support loading additional data from a subscription after a query is executed? Subscriptions are difficult to use efficiently without this functionality: https://www.apollographql.com/docs/react/data/subscriptions/#subscribetomore

To get around this I have been doing something like:

module Subscriber {
  [@react.component]
  let make = (~results) => {
    (subResults, _) = ApolloHooks.useSubscription(...);
    switch subResults {
      | Data(newResults) => <StatelessRenderer results=newResults />
      | _ => <StatelessRenderer results=results />
    }
  }
}

// parent component will query, then child will either pass data through 
// or re-render on subscription update
[@react.component]
let make = () => {
  (results, _) = ApolloHooks.useQuery(...);
  <Subscriber results=results />
}

But this has the major problem that each subscription push most contain all the data required to re-render a components, as opposed to an individual item to add, subtract, etc.

MargaretKrutikova commented 4 years ago

I am pretty sure it is supported, here is where subscribeToMore is defined as a return value queryResult from useQuery. Can you check whether it will work for you?

Ejhfast commented 4 years ago

Thanks, that looks very promising! Not sure how I missed it when I looked through the library. I'll close this issue once I confirm it's working -- will also try to do a pull request with some extra documentation.

MargaretKrutikova commented 4 years ago

That would be great 🙂