Объекты недопустимы как дочерний элемент React (найдено: объект с ключами …)

#javascript #reactjs #state

#javascript #reactjs #состояние

Вопрос:

Я пытаюсь установить состояние. Вот мой код:

 import React, { Component, useRef, Fragment, useEffect, useState } from "react";
import axios from "axios";

const Cart = (props) => {

    const [useCart, setCart] = useState([]);
        
    useEffect(() => {
        (async () => {
            const result = await axios
                .get('https://example.com/sample')
                .then((res) => {
                    setCart(res.data);
                })
                .catch((err) => {
                    console.error(err);
                });
        })();
    }, []);

    console.log(useCart);

    return (
        <div></div>
    );

}

export default Cart;
  

API возвращает значение, подобное этому:

 [
    {
        'id': 5,
        'qwe': 'qwe',
        'asd': [
            {
                'aaa': 'aaa',
                'bbb': 'bbb'
            }
        ],
        'zxc': 'zxc'
    },
    {
        'id': 7,
        'qwe': 'qwe',
        'asd': [
            {
                'aaa': 'aaa',
                'bbb': 'bbb'
            }
        ],
        'zxc': 'zxc'
    }
]
  

Я не отображаю это в компоненте. Я просто пытаюсь записать его в консоль. Но это выдает ошибку, подобную этой:

 Error: Objects are not valid as a React child (found: object with keys {id, qwe, asd, zxc}). If you meant to render a collection of children, use an array instead.
  

Я не мог понять, где я делаю неправильно.

Комментарии:

1. Можете ли вы добавить полный код компонента?

2. как вы используете useCart ?

3. @MattAft Я пытаюсь записать его в консоль

4. @ShubhamVerma хорошо, теперь редактируем вопрос

5. Я не вижу ничего плохого в этом коде, вы уверены, что это то, что у вас есть?

Ответ №1:

Не знаю, что не так с вашим кодом, но, возможно, я смогу помочь вам его отладить. Я скопировал ответ вашего API в файл и просто импортировал его внутри компонента в переменную. Затем я устанавливаю состояние в эту переменную, и все работает нормально, все журналы консоли и все остальное. Проверьте это здесь-

https://codesandbox.io/s/angry-ramanujan-3k97v?file=/src/App.js

Это говорит мне о том, что проблема может исходить из вашего useEffect , где вы обрабатываете свой ответ API.

Одно изменение, которое я внес, и я думаю, вам тоже следует это сделать, когда вы выходите из переменной состояния, вы должны сделать это внутри крючка жизненного цикла. Поэтому вы должны поместить свой console.log(useCart); внутрь этого useEffect(()=>{ console.log(useCart); },[useCart])