Ошибка: Объекты недопустимы в качестве дочернего элемента React (найдено: объект с ключами {карта, для каждого, количество, только для отображения}). Если вы хотели визуализировать коллекцию

#javascript #reactjs #components #clone #react-context

Вопрос:

я пытаюсь клонировать веб-сайт amazone, за которым я слежу (программист celever на youtube), поэтому я хотел создать корзину amazon с api контекста React. Возникает ошибка «Ошибка: Объекты недопустимы в качестве дочернего элемента React (найдено: объект с ключами {map, forEach, count, toArray, только}). Если вы хотели отобразить коллекцию дочерних элементов, вместо этого используйте массив.»

Вот мой код

index.js :

 import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
import { StateProvider } from "./StateProvider";
import reducer, { initialState } from "./reducer";

ReactDOM.render(
  <React.StrictMode>
    <StateProvider initialState={initialState} reducer={reducer}>
      <App />
    </StateProvider>
  </React.StrictMode>,
  document.getElementById("root")
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
serviceWorker.unregister(); 

stateProvider.js:

 import React, { createContext, useContext, useReducer } from "react";
import { Children } from "react";

export const StateContext = createContext();

export const StateProvider = ({ reducer, initialState, children }) => (
  <StateContext.Provider value={useReducer(reducer, initialState)}>
    {Children}
  </StateContext.Provider>
);

export const useStateValue = () => useContext(StateContext); 

reducer.js:

 export const initialState = {
  basket: [],
};

function reducer(state, action) {
  switch (action.type) {
    case "ADD_TO__BASKET":
      break;
    case "REMOVE_FROM_BASKET":
      break;
    default:
      return state;
  }
}

export default reducer; 

header.js:

 import React from "react";
import "./Header.css";
import { Link } from "react-router-dom";
import SearchIcon from "@material-ui/icons/Search";
import { grey } from "@material-ui/core/colors";
import ShoppingBasketIcon from "@material-ui/icons/ShoppingBasket";
import { useStateValue } from "./StateProvider";

function Header() {
  const [{ basket }] = useStateValue();

  return (
    <nav className="header">
      {/* logo */}
      <Link to="/">
        <img
          className="header__logo"
          src="https://www.mabaya.com/wp-content/uploads/2019/10/amazon_PNG25.png"
          alt=""
        />
      </Link>

      {/* SearchBox */}
      <div className="header__search">
        <input type="text" className="header__SearchBox" />
        <SearchIcon className="header__SearchIcon" />
      </div>
      {/* Links */}
      <div className="header__nav">
        {/* 1link */}
        <Link to="/login" className="header__link">
          <div className="header__option">
            <span className="header__optionsecondary">Hello,</span>
            <span>Sign in</span>
          </div>
        </Link>
        {/* 2link */}
        <Link to="/check" className="header__link">
          <div className="header__option">
            <span className="header__optionsecondary">returns </span>
            <span>amp; orders</span>
          </div>
        </Link>
        {/* 3link */}
        <Link to="/" className="header__link">
          <div className="header__option">
            <span className="header__optionsecondary">Your</span>
            <span>Prime</span>
          </div>
        </Link>
        {/* basket link */}
        <Link to="/check" className="header__link">
          <div className="header__optionbasket">
            {/* shopping Basket Icon  */}
            <ShoppingBasketIcon style={{ color: grey[50] }} />
            {/* Number of items in the basket  */}
            <span className="header__optionbaskettext"> {basket.length}</span>
          </div>
        </Link>
      </div>
      {/* panier */}
    </nav>
  );
}

export default Header; 

App.js:

 import "./App.css";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Header from "./Header";
import Home from "./Home";
import Login from "./Login";

function App() {
  return (
    <Router>
      <div className="app">
        <Switch>
          <Route path="/login">
            <Header />
            <Login />
          </Route>

          <Route path="/check">
            <Header />

            <h1>check guys</h1>
          </Route>

          <Route path="/">
            <Header />
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}

export default App; 

Заранее благодарю вас за ваш ответ.

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

1. {Children} вы имели в виду {children}

2. ооо, спасибо, в этом и была проблема, я чувствую себя глупо, мне следует сделать перерыв. 😖 😖 😖