Coder Social home page Coder Social logo

Comments (8)

ncphillips avatar ncphillips commented on July 17, 2024 2

We ran into this issue as well. Since hooks are tied into the lifecycle of a component. React doesn't like it if you exit the render function before all hooks are called.

function Foo () {
  const query = useSomeQuery()
  if (query.loading) return <Loading />
  if (query.errors ) return <Errors />

  // This will cause problems.
  let [bar, setBar] = useState()

  return <View bar={bar} setBar={setBar} data={query.data} />
}

Make sure all hooks are called before any early returns.

function Foo () {
  let [bar, setBar] = useState()

  const query = useSomeQuery()
  if (query.loading) return <Loading />
  if (query.errors ) return <Errors />

  return <View bar={bar} setBar={setBar} data={query.data} />
}

from react-apollo-hooks.

trojanowski avatar trojanowski commented on July 17, 2024 1

@JClackett @rovansteen it seems it's an issue with React: facebook/react#14790

from react-apollo-hooks.

trojanowski avatar trojanowski commented on July 17, 2024

@JClackett could you please try to provide a reproduction on https://codesandbox.io?

from react-apollo-hooks.

JClackett avatar JClackett commented on July 17, 2024

@ncphillips Thanks! I checked and all my hooks are at the top of the function body above any returns 🤷‍♂️

@trojanowski I'm finding it hard to set up a codesandbox with a dummy graphql api, any suggestions?

One more thing i noticed is that when I am wrapping a component using memo() in a component, and using useQuery with suspend: true, that's when i get the errors, setting suspend: false removes all error.

function Child() {
  const { data, error } = useQuery(GET_THING) // suspend: true
  return (
    <div>hello</div>
  )
}

export default memo(Child)

and the parent

function Parent() {
	return (
      <Suspense fallback="loading...">
		    <Child />
      </Suspense>
  )
}

This gives the errors, however when setting suspend = false, then it's fine, am i missing something with memo/hooks/react-apollo-hooks?

from react-apollo-hooks.

rovansteen avatar rovansteen commented on July 17, 2024

I got similar errors, in my case, it was because I was lazy loading the component with the useQuery hook with React.lazy. Looks like they don't play well together yet.

from react-apollo-hooks.

JClackett avatar JClackett commented on July 17, 2024

thanks @trojanowski, am happy to close this issue then, and wait on the react issue to be resolved

from react-apollo-hooks.

hronro avatar hronro commented on July 17, 2024

I have the same problem with React v16.8.3, the issue happens when I call useState or useCallback after calling useQuery.

from react-apollo-hooks.

trojanowski avatar trojanowski commented on July 17, 2024

@foisonocean Could you please provide a reproduction on https://codesandbox.io? As a source you can use https://www.graphqlhub.com (GraphQL API url: https://www.graphqlhub.com/graphql, example query here).

from react-apollo-hooks.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.