I am getting errors when I am using array methods like map, filter, etc in my product API in my console as well as I am not getting anything in my browser. I am using here redux-toolkit/query in my Reactjs app. I am using react 18 version and Node.js 16 version in my system.
Home.js
import React from "react";
import { Error, Loader, Products } from "../components";
import { useGetAllProductsQuery } from "../redux/services/productSlice";
const Home = () => {
const { data, error, isLoading } = useGetAllProductsQuery();
data.map(product => {
console.log(product);
})
if (isLoading) return <Loader title="Loading Products..." />;
if (error) return <Error />;
return <div>
Home
</div>;
};
export default Home;
productSLice.js
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
export const productsApi = createApi({
reducerPath: "productsApi",
baseQuery: fetchBaseQuery({ baseUrl: "https://dummyjson.com/" }),
endpoints: (builder) => ({
getAllProducts: builder.query({
query: () => "products",
}),
getProduct: builder.query({
query: (product) => `products/search?q=${product}`,
}),
}),
});
export const { useGetAllProductsQuery, useGetProductQuery } = productsApi;
store.js
import { configureStore } from "@reduxjs/toolkit";
import { productsApi } from "./services/productSlice";
export const store = configureStore({
reducer: {
[productsApi.reducerPath]: productsApi.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(productsApi.middleware),
});
app.js
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import { Provider } from "react-redux";
import { store } from "./redux/store";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>
);
This is the error
Home.js:7 Uncaught TypeError: Cannot read properties of undefined
(reading 'map')
at Home (Home.js:7:1)
at renderWithHooks (react-dom.development.js:16305:1)
at mountIndeterminateComponent (react-dom.development.js:20074:1)
at beginWork (react-dom.development.js:21587:1)
at HTMLUnknownElement.callCallback (react-dom.development.js:4164:1)
at Object.invokeGuardedCallbackDev (react-dom.development.js:4213:1)
at invokeGuardedCallback (react-dom.development.js:4277:1)
at beginWork$1 (react-dom.development.js:27451:1)
at performUnitOfWork (react-dom.development.js:26557:1)
at workLoopSync (react-dom.development.js:26466:1)

datais null? Has the query completed? It doesn't look like you check, and we can't seeuseGetAllProductsQuery.console.logcan be misleading; the log will be updated after async processes complete--console.logstringified JSON to avoid this "gotcha". It seems pretty clear you're accessingdatabefore it's been populated.