reactjs - RangeError: Dimensiunea maximă a stivei de apeluri a fost depășită React Native


Folosesc https://formidable.com/open-source/urql/ pentru a prelua date de la serverul GraphQL în React Native.

Componenta este implementată după cum urmează:

import React from "react"
import { View, Text } from "react-native"
import { HashtagsProps } from "./types"
import { useQuery } from "urql";

const HashtagsQuery = `
query {
    searchHashtags(input: {pattern: "vegan"}) {
      id
      name
    }
}  
`

export default function Hashtags({ navigation }: HashtagsProps) {

    const [result] = useQuery({
        query: HashtagsQuery
    })

    const { data, fetching, error } = result;

    if (fetching) console.log("loading");
    if (error) console.log(error.message);
    console.log(data)

    return (
        <View>
            <Text>Hashtags</Text>
        </View>
    )

} 

Când rulez aplicația, interogarea funcționează conform așteptărilor și primesc date de la serverul GraphQL.

Cu toate acestea, consola afișează mesaje de eroare:

Respingere promisiune netratată, [RangeError: Dimensiunea maximă a stivei apelurilor a fost depășită.] la node_modules/core-js/internals/host-report-errors.js:5:32 în module.exports la http://192.168.178.27:19000/node_modules/expo/AppEntry.bundle?platform=android&dev=true&hot=false&minify=false:205269:138 în dispatchEvent la node_modules/core-js/modules/es.promise.js:163:23 în perform$argument_0 la node_modules/core-js/internals/perform.js:3:20 în module.exports la node_modules/core-js/modules/es.promise.js:160:22 în task.call$argument_1

Folosesc versiunea expo ^42.0.0.

Am încercat, de asemenea, să omit interogarea graphql după cum urmează:

export default function Hashtags({ navigation }: HashtagsProps) {

   
    return (
        <View>
            <Text>Hashtags</Text>
        </View>
    )

}

și mesajele de eroare nu mai apar.

Ce fac greșit?

Răspuns #1

Se pare că interogarea ta va încerca să apeleze de fiecare dată. Te rog să o înfășori cu useEffect pentru a fi apelată o singură dată? Apoi, dacă ai update, poți să-l adaugi în deps de la useEffect.