es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener datos y actualizar el estado con los Hooks useState() useEffect()

Intento actualizar la variable de estado “submissions” usando el hook useEffect(), que se supone que debe buscar datos de la API. Pero después de hacer setSubmissions(result.data) y luego pasar la variable de submissions al componente Table

, se produce un error TypeError: Cannot convert undefined or null to object, lo que me indica que no estoy actualizando correctamente submissions a un array del fetching de la API.

export default function Dashboard() {
    const [submissions, setSubmissions] = useState([]);

    useEffect(() => {
        async function loadData() {
            const query = `query {submissionsList {
                user_id type quantity impact date}
            }`;
            const response = await fetch ('http://localhost:8000/graphql', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json'},
                body: JSON.stringify({ query })
            });
            const result = await response.json();
            setSubmissions(result.data);
        }
        loadData();
    }, []);

    return (
        <grid container="" spacing="{4}">
            <grid item="" xs="{12}">
                <widget>
                    <table data="{submissions}"></table>
                </widget>
            </grid>
        </grid>
    );
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código anterior es que se está llamando a la función setSubmissions con todo el objeto result.data en lugar de solo la matriz de propiedades submissionsList. Para solucionar este problema, reemplace setSubmissions(result.data); con setSubmissions(result.data.submissionsList);. Esto pasará correctamente la matriz de datos de envío al componente Table y evitará el error TypeError.

Comments are closed.